我想创建一个功能类似于Gmail android应用程序的 ListView 。我的意思是,您可以通过单击左侧的图像来选择行,也可以通过单击该行的其他任何位置来查看电子邮件。我可以接近,但还不算很近。

我的自定义行由左侧的ImageView和右侧的一些TextView组成。这是我的适配器上的getView的要点。

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        View row = super.getView(position, convertView, parent);

        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getListView().setItemChecked(position, !getListView().isItemChecked(position));
            }
        });

        row.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getActivity(), "" + position, Toast.LENGTH_SHORT).show();
            }
        });
     }

这非常接近!缺少的是在行单击监听器上突出显示该行。

最佳答案

选项1 :使用listView的内置choiceMode功能。不幸的是,我从未实现过。因此,无法给您详细的答案。但是您可以从here和其他答案中获得提示。

选项2 :自己实现。定义一个array/list或任何替代方法,以保留列表中所选元素的索引。然后使用它来过滤getView()中的背景。这是一个工作示例:

public class TestAdapter extends BaseAdapter {

List<String> data;
boolean is_element_selected[];

public TestAdapter(List<String> data) {
    this.data = data;
    is_element_selected = new boolean[data.size()];
}

public void toggleSelection(int index) {
    is_element_selected[index] = !is_element_selected[index];
    notifyDataSetChanged();
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    //Initialize your view and stuff

    if (is_element_selected[position])
        convertView.setBackgroundColor(context.getResources().getColor(R.color.blue_item_selector));
    else
        convertView.setBackgroundColor(Color.TRANSPARENT);

     imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                toggleSelection(position);
            }
        });

      row.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //get to detailed view page
            }
        });

    return convertView;
}

祝你好运!

10-07 19:25
查看更多