【问题标题】:Managing a list item of ListView管理 ListView 的列表项
【发布时间】:2012-10-21 16:05:45
【问题描述】:

我创建了一个自定义 ListView。列表中的每一项都有一个 imageView 和两个 TextView。

代码是:

public class PersonalList extends ListActivity{

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    String[] name= new String[] { "Mary", "Frank",
            "John" };
    String[] surname = new String[] { "Ballak", "Doe",
            "Strip"" };
    setContentView(R.layout.member_list);

    MySimpleArrayAdapter adapter = new MySimpleArrayAdapter(this, name, surname);
    setListAdapter(adapter);
}

 protected void onListItemClick(ListView l, View v, int position, long id) {
    String name = (String) getListAdapter().getItem(position);
    Toast.makeText(this, "selected item: "+name, Toast.LENGTH_LONG).show();     
  }

 }

MySimpleArrayAdapter 在哪里:

public class MySimpleArrayAdapter extends ArrayAdapter<String> {
      private final Context context;
      private final String[] name;
      private final String[] surname;

      public MySimpleArrayAdapter(Context context, String[] name, String[] surname)
      {
          super(context, R.layout.list_row, name);
          this.context = context;
          this.name= name;
          this.surname = surname;
      }

      @Override
      public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(R.layout.rowlayout, parent, false);
        TextView nameView= (TextView) rowView.findViewById(R.id.label);
        TextView surnameView= (TextView) rowView.findViewById(R.id.label1);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
        nameView.setText(name[position]);
        surnameView.setText(surname[position]);

        return rowView;
      }
  } 

onListItemClick调用以下代码:

  Toast.makeText(this, "selected item: "+name, Toast.LENGTH_LONG).show();

我在 toast 中为第一项获得这样的消息:

  "selected item: Mary"

我该怎么做才能获得以下结果?

  "selected item: Mary Ballak"

【问题讨论】:

  • 我强烈建议您观看 Android 的 Romain Guy discuss adapters and efficiency 以获得一些专业提示,因为您根本没有使用 ArrayAdapter 的独特方法,我建议您扩展 BaseAdapter。

标签: android listview view viewgroup


【解决方案1】:

这会得到你的名字和姓氏:

 protected void onListItemClick(ListView l, View v, int position, long id) {
    String name = (String) getListAdapter().getItem(position);
    Toast.makeText(this, "selected item: " + ((TextView) v.findViewById(R.id.label)).getText().toString() + " " + ((TextView) v.findViewById(R.id.label1)).getText().toString(), Toast.LENGTH_LONG).show();     
  }

此外 - 您可以从 onItemClick 获取索引并从数组(姓名/姓氏)中获取字符串 - 如果您将数组保存为 Activity 的成员

类似:String text = mName[position] + " " + msurName[position];

【讨论】:

  • 谢谢。现在效果很好。但是为什么 getListAdapter().getItem(position);返回第一个String数组的项(名称)?
  • 适配器遍历字符串的 ArrayList。 getView() 方法将作为 List 的项目被调用的次数。在您的情况下-尽管您没有像这样实现适配器,但列表是名称列表。 PS如果这个答案对你有帮助 - 请善待并接受它.. :0 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多