【问题标题】:Need Help ListView and onItemClickListener需要帮助 ListView 和 onItemClickListener
【发布时间】:2011-12-21 12:03:03
【问题描述】:

我知道有很多关于使用 onItemClickListener 和列表视图的信息,但我是 android 开发新手,似乎无法让它工作。

我不太确定应该在哪里添加监听器,所以我非常感谢一些帮助和指导。

我有两个文件,主要活动

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.menu);

    ArrayList<GroceryList> menuitems = getItems();

    ListView listView = (ListView) findViewById(R.id.Menu);
    listView.setAdapter(new GroceryListAdapter(this, R.layout.categorymenu, menuitems));        
}

ListAdapter 文件

public class GroceryListAdapter extends ArrayAdapter<GroceryList> {
private ArrayList<GroceryList> grocerylists;
private Activity activity;
public ImageManager imageManager;

public GroceryListAdapter(Activity a, int textViewResourceId, ArrayList<GroceryList> grocerylists) {
    super(a, textViewResourceId, grocerylists);
    this.grocerylists = grocerylists;
    activity = a;

}

public static class ViewHolder{
    public TextView name;
    public TextView message;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    ViewHolder holder;
    if (v == null) {        
        LayoutInflater vi = 
            (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.categorymenu, null);
        holder = new ViewHolder();
        holder.name = (TextView) v.findViewById(R.id.categoryname);
        holder.message = (TextView) v.findViewById(R.id.message);
        v.setTag(holder);
    }
    else
        holder=(ViewHolder)v.getTag();

    final GroceryList grocerylist = grocerylists.get(position);
    if (alcohollist != null) {
        holder.name.setText(grocerylist.name);
        holder.message.setText(grocerylist.message);
    }
    return v;
}

很抱歉,如果我问的问题已经得到解答,但我花了很多时间试图自己弄清楚但没有成功。

我希望比我更有经验的人能够告诉我应该在哪里以及如何添加 onItemClickListen 方法。

谢谢!

【问题讨论】:

    标签: android listview onitemclicklistener


    【解决方案1】:

    从外观上看,您使用的是常规 Activity,因此您应该添加以下内容:

     listView.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {              
                   Toast.makeText(getApplicationContext(), "You clicked item at position"+position,
                  Toast.LENGTH_SHORT).show();
    
                }
            });
    

    之前您的主要活动中的.setAdapter。应该可以的。

    【讨论】:

    • 嘿桑德!非常感谢您的快速反馈!这真的很有帮助,我设法让它工作!你的救命稻草!
    • 不客气,很高兴看到您设法解决了问题。祝您应用的其余部分好运,如果遇到任何问题,请随时询问
    【解决方案2】:

    在您的主要活动中:

    listView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
          // When clicked, show a toast with the TextView text
          Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
              Toast.LENGTH_SHORT).show();
        }
      });
    

    【讨论】:

      【解决方案3】:
       @Override
          protected void onListItemClick(ListView l, View v, int position, long id){
             // startActivity( new Intent());
      
              Intent i = new Intent(this,"Next_Activity_Name".class);
              i.putExtra("selected",(int)selected_position);
              final int resultCode = 2;
              startActivityForResult(i,resultCode);
      
      
      
      }
      

      您必须在 onCreate() 方法之后将这段代码添加到您的主要活动中..

      【讨论】:

        【解决方案4】:

        设置好适配器后写下如下代码。

        listView.setOnItemClickListener(new OnItemClickListener(){
        
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                        long arg3) {
                    // TODO Auto-generated method stub
        
                }});
        

        在 onItemClick 方法下处理您想要在点击时执行的功能。

        【讨论】:

          【解决方案5】:

          您已使用 自定义适配器,因此您可以在 categorymenu 布局中定义的特定小部件上设置 touchListner。这样做很容易,但是

          如果你使用简单的 listview 那么

          在列表视图中添加参数

          lview.setOnItemClickListener(this);
          
          public void onListItemClick(ListView parent, View v, int position, long id) {
              // do with list-view item Position 
          }
          

          更多....

          【讨论】:

          • 嘿 Dr.nik 感谢您的帮助!您发布的链接将极大地帮助我了解有关 Listviews 的更多信息!
          • @RonnyvandenBergh +1 温柔地展示你的 Que
          【解决方案6】:

          这里有这么多的答案,但似乎你不明白他们在说什么。我也会尽量给出答案。

          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.menu);
          
              ArrayList<GroceryList> menuitems = getItems();
          
              ListView listView = (ListView) findViewById(R.id.Menu);
              listView.setOnItemClickListener(new OnItemClickListener() {
                  @Override
                  public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
                      // do whatever you want on clicking any list itm
                  }
              });
              listView.setAdapter(new GroceryListAdapter(this, R.layout.categorymenu, menuitems));        
          }
          

          希望你能理解。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-01-04
            • 2017-10-05
            • 2017-03-23
            • 2012-09-26
            相关资源
            最近更新 更多