将onClickListener添加到列表视图android

问题描述 投票:0回答:5

我有两个java类,它们构成一个customListView。我从一个正在使用应用程序的人那里得到了代码,但我并不真正了解她的代码。我想添加按钮,在点击它们时会带您进入新活动,并将每个部分的“描述”+项目名称[positionof]的文本更改为不同(她将它们全部分组,以便我无法更改每个人)。

我知道你可以做点什么

public void onLeaderboardClick(View view)
    {
        Intent intent = new Intent(MainActivity.this , Leaderboard.class);
        startActivity(intent);
    }

开始新的活动,但正如我上面所说,我只是不确定如何将它们分开,所以每个都可以有不同的onClickValue

public class ListMainActivity extends Activity {
        ListView list;
        String[] itemname ={
                "Capture The Flag",
                "Leaderboard",
                "Log out"};

    Integer[] imgId={
            R.drawable.capturetheflag,
            R.drawable.leaderboard,
            R.drawable.logout,
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list_main);

        CustomListAdapter adapter=new CustomListAdapter(this, itemname, imgId);
        list=(ListView)findViewById(R.id.list);
        list.setAdapter(adapter);

        list.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                // TODO Auto-generated method stub
                String Selecteditem= itemname[+position];
                Toast.makeText(getApplicationContext(), Selecteditem, Toast.LENGTH_SHORT).show();
            }
        });
    }
}

public class CustomListAdapter extends ArrayAdapter<String>{

private final Activity context;
private final String[] itemname;
private final Integer[] imgid;

public CustomListAdapter(Activity context, String[] itemname, Integer[] imgid) {
    super(context, R.layout.mylist, itemname);
    this.context=context;
    this.itemname=itemname;
    this.imgid=imgid;
}
public View getView(int position,View view,ViewGroup parent) {
    LayoutInflater inflater=context.getLayoutInflater();
    View rowView=inflater.inflate(R.layout.mylist, null,true);

    TextView txtTitle = (TextView) rowView.findViewById(R.id.item);
    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
    TextView extratxt = (TextView) rowView.findViewById(R.id.textView1);

    txtTitle.setText(itemname[position]);
    imageView.setImageResource(imgid[position]);
    extratxt.setText("Description of "+itemname[position]);
    return rowView;
};
}
java android
5个回答
0
投票

您可以通过在自定义适配器中指定单个侦听器,将单个侦听器添加到列表项中的每个元素

How do i call onclick listener of a button which resides in listview item

查看此问题可能对您有所帮助


0
投票

我认为你应该在行layut布局中添加一个按钮。然后在Adapter类的getView()方法中:

Button btnClick= (Button) rowView.findViewById(R.id.btnClick);
btnClick.setOnClickListener(@Override
    public void onClick(View v) {
        //todo something with each button
    });

0
投票

对于任何回顾这个问题的人,我最终都做了一个转换声明


0
投票
       # In your Adapter Class while inflating xml add a buttons as required 
     #   and get the references for that buttons then write onClick on #that button in your getView method of Adapter 


    public View getView(int position,View view,ViewGroup parent) {
        LayoutInflater inflater=context.getLayoutInflater();
        View rowView=inflater.inflate(R.layout.mylist, null,true);

        TextView txtTitle = (TextView) rowView.findViewById(R.id.item);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
        TextView extratxt = (TextView) rowView.findViewById(R.id.textView1);


    Button button =(Button) rowView.findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                   // Do your Work 

Launch the Required Intent 
                }
            });

        txtTitle.setText(itemname[position]);
        imageView.setImageResource(imgid[position]);
        extratxt.setText("Description of "+itemname[position]);
        return rowView;
    };

0
投票

您必须在类自定义适配器的getViewMethod中使用rowView.setOnClickListener(),然后在其中您可以根据视图的位置指定您想要去的活动。

© www.soinside.com 2019 - 2024. All rights reserved.