【问题标题】:How to get a specific Item from a ListView by clicking on it?如何通过单击从 ListView 中获取特定项目?
【发布时间】:2013-10-20 22:25:24
【问题描述】:

首先,我是安卓编程的初学者。所以不要太苛刻:P

无论如何,我有一个可回收的 ListView,每个列表项包含一个图像和一个文本。 假设有 100 个不同的项目。单击的每个项目都会将我带到带有“detail_layout.xml”的活动“DetailActivity.class”。现在我想根据点击的 Item 来配置这个布局。

TestActivity.java:

ArrayList<String> list = new ArrayList<String>();
for(int i = 0; i <= 99; i++) {
    list.add(detail_array[i]); 
    //detail_array[] contains Strings which are used to add Items to the list.
}
private ListView myList = (ListView)findViewById(R.id.list);
myList.setAdapter(new MyCustomAdapter(TestActivity.this,list));

MyCustomAdapter.java:

public class MyCustomAdapter extends BaseAdapter {

private ArrayList<String> mListItemsTV;
private LayoutInflater mLayoutInflater;

public View getView(int position, View view, ViewGroup viewGroup) {
    ViewHolder holder;
    if (view == null) {
        holder = new ViewHolder();
        view = mLayoutInflater.inflate(R.layout.list_item, null);
        holder.itemName = (TextView) view.findViewById(R.id.list_item_text_view);
        view.setTag(holder);
    } else {
        holder = (ViewHolder)view.getTag();
    }
    String stringItem = mListItemsTV.get(position);
    if (stringItem != null) {
        if (holder.itemName != null) {
            holder.itemName.setText(stringItem);
            ImageView imageView = (ImageView) view.findViewById(R.id.list_item_image_view);
            if(holder.itemName.getText() == "SomeName") {
                imageView.setImageResource(R.drawable.somedrawable);
            }
    return view;
}

说实话,我从某种教程中得到了这些,我想我知道那里发生了什么^^ 现在,我怎样才能获得点击了哪个项目?我用“setOnClickListener”试了几次,但它似乎从来没有用过。我该如何使用它?我应该使用这个吗?我必须在哪里使用它?

【问题讨论】:

    标签: android listview onclicklistener onitemclicklistener


    【解决方案1】:

    基本思想是列表视图通常是动态的,因此您将拥有一个任意数量的项目集合,您希望向侦听器注册这些项目。除非您单独注册每个项目(这不是一个好主意),否则 Oclicklistener 将无法工作。使用 onitemclicklistener 注册这个链接应该有帮助的集合。 http://www.ezzylearning.com/tutorial.aspx?tid=1351248&q=handling-android-listview-onitemclick-event

    【讨论】:

      【解决方案2】:

      您需要使用 setOnItemClickListener。这是一个如何使用它的例子。您需要使其适应您的代码。但是您可以看到如何引用列表中的单个项目。

      listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, final View view,
            int position, long id) {
          final String item = (String) parent.getItemAtPosition(position);
          view.animate().setDuration(2000).alpha(0)
              .withEndAction(new Runnable() {
                @Override
                public void run() {
                  list.remove(item);
                  adapter.notifyDataSetChanged();
                  view.setAlpha(1);
                }
              });
        }
      
      });
      

      }

      我回家后会修正格式。在移动提款机上。如果有人想编辑代码,请随意。

      【讨论】:

        【解决方案3】:

        如果您不想使用适配器,请尝试以下操作:

           @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {
            switch(position){
            /*
             * The case is the list position
             */
            case 0:
        
                break;
            case 1:
        
                break;
            }
        
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多