0

我使用扩展基本适配器的列表视图适配器创建了一个列表视图。如何在自定义列表视图中设置OnitemClick

它工作正常。但我需要添加onitemClick监听器到列表视图,当我点击一个列表项时,它会转到另一个活动,以及listitem.how我们可以做到这一点吗?

这是使用

int a,b; 
list = new ArrayList<HashMap<String,String>>(); 
for (a=0; a<outputString.length;a++){ 
    HashMap<String,String> temp1 = new HashMap<String,String>(); 
    temp1.put(FIRST_COLUMN,outputString[a][0]); 
    temp1.put(SECOND_COLUMN, outputString[a][1]); 
    temp1.put(THIRD_COLUMN, outputString[a][4]); 
    temp1.put(FOURTH_COLUMN, outputString[a][5]); 
    list.add(temp1); 
} 
listviewAdapter adapter = new listviewAdapter(this, list); 
lview.setAdapter(adapter); 

回答

1

与列表项一起

,如果你想从该列表项的一些数据

,只是已在监听器中使用parent.getItemAtPosition(position)提及。这将返回相应的Object,您可以用

HashMap<String, String> map = (HashMap<String, String>) parent.getItemAtPosition(position); 
    String one = map.get("key"); 
    String two = map.get("key2"); 

    Intent next = new Intent(FirstActivity.this, NextActivity.class); 
    next.putExtra("One", one); 
    next.putExtra("Two", two); 
    startActivity(next); 

执行进一步的行动得到它在你的第二个活动:

Bundle extras = getIntent().getExtras(); 
String one = extras.getStringExtra("One"); 
String two = extras.getStringExtra("Two"); 
+0

嗨,我需要将该项目传递给下一个班级,这有多可能? – SibinF 2013-03-11 11:26:05

+0

您需要传递的不是项目本身,而是它所保存的数据。使用getItemAtPosition(position)将返回一个HashMap。使用get方法从这个HashMap获取字符串,然后把它们作为额外的意图 – Droidman 2013-03-11 11:30:21

+0

雅我会尝试yar .. thanx – SibinF 2013-03-11 11:31:31

1

在您的列表视图这样创建onItemClickListener我在ListView适配器

public class listviewAdapter extends BaseAdapter{ 
    String FIRST_COLUMN = Constant.FIRST_COLUMN; 
    String SECOND_COLUMN = Constant.SECOND_COLUMN; 
    String THIRD_COLUMN = Constant.THIRD_COLUMN; 
    String FOURTH_COLUMN = Constant.FOURTH_COLUMN; 
    public ArrayList<HashMap<String,String>> list; 
    Activity activity; 

    public listviewAdapter(Activity activity, ArrayList<HashMap<String,String>> list) { 
    super(); 
    this.activity = activity; 
    this.list = list; 
    } 

    @Override 
    public int getCount() { 
    // TODO Auto-generated method stub 
    return list.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
    // TODO Auto-generated method stub 
    return list.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return 0; 
    } 

    private class ViewHolder { 
     TextView txtFirst; 
     TextView txtSecond; 
     TextView txtThird; 
     TextView txtFourth; 
    } 


    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    View vi=convertView; 
    // TODO Auto-generated method stub 
      ViewHolder holder; 
      LayoutInflater inflater = activity.getLayoutInflater(); 

      if (convertView == null) 
      { 
       convertView = inflater.inflate(R.layout.requestcard_columnsdetails, null); 
       holder = new ViewHolder(); 




       holder.txtFirst = (TextView) convertView.findViewById(R.id.date); 
       holder.txtSecond = (TextView) convertView.findViewById(R.id.from); 
       holder.txtThird = (TextView) convertView.findViewById(R.id.to); 
       holder.txtFourth = (TextView) convertView.findViewById(R.id.time); 
       convertView.setTag(holder); 
      } 
      else 
      { 
       holder = (ViewHolder) convertView.getTag(); 
      } 

      HashMap<String, String> map = list.get(position); 
      holder.txtFirst.setText(map.get(FIRST_COLUMN)); 
      holder.txtSecond.setText(map.get(SECOND_COLUMN)); 
      holder.txtThird.setText(map.get(THIRD_COLUMN)); 
      holder.txtFourth.setText(map.get(FOURTH_COLUMN)); 



     return convertView; 
    } 
} 

我居住在主活动列表中的项目代码:

lview.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView parent, View view, 
        int position, long id) { 
    Intent intent = new intent(mainactivity.this, target.class); 
    // maybe put some extra arguments to the intent 
    startActivity(intent); 

      } 
     }); 

要将您的额外数据用于下一个活动,请使用您的意图: Intent doc

+0

我如何才能在未来的类ITM ID?我需要将点击的项目传递给下一个类,它怎么可能 – SibinF 2013-03-11 11:23:46

+0

intent.putExtra(“id”,id) 然后在第二个活动中恢复。 – staaar 2013-03-11 11:24:43

+0

我在我的答案中链接了文档。它给你一个关于如何放置额外数据的更长的解释。 – staaar 2013-03-11 11:25:16

1

使用setOnItemClickListener

lview.setOnItemClickListener(new OnItemClickListener() { 

    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

     Intent intent = new Intent(Activity.this, secondActivity.class); 
    startActivity(intent); 
    } 
}); 
+0

我如何得到下一个类的项目ID – SibinF 2013-03-11 11:22:13

+0

我也需要通过项目数组,outputString [a] [0])这个值到下一个类 – SibinF 2013-03-11 11:22:54

+0

使用intent.putExtra(key,Value) – Nermeen 2013-03-11 11:24:03

1

试试这个:

list_view.setOnItemClickListener(new OnItemClickListener() { 

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) 
     { 

     Intent myIntent = new Intent(Current_Activity.this,Next_Activity.class); 
     startActivity(myIntent); 
} 
}); 
相关问题