4

我正在使用带有列表的 onItemClickListener()。我想将单击的项目的名称和任意数字传递给列表的下一个实例。如何才能做到这一点?编辑:这是课程:

    public class ListViewA extends Activity{

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ListView lv= (ListView)findViewById(R.id.listview);

        // create the grid item mapping
        String[] from = new String[] {"col_1"};
        int[] to = new int[] {R.id.item2};

        // prepare the list of all records
        List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>();
        for(int i = 0; i < 10; i++){
            HashMap<String, String> map = new HashMap<String, String>();
            map.put("col_1", "col_1_item_" + i);
            fillMaps.add(map);
            lv.setOnItemClickListener(onListClick);
        }

        // fill in the grid_item layout
        SimpleAdapter adapter = new SimpleAdapter(this, fillMaps, R.layout.grid_item, from, to);
        lv.setAdapter(adapter);
    }
    private AdapterView.OnItemClickListener onListClick=new AdapterView.OnItemClickListener(){
    public void onItemClick(AdapterView<?> parent,View view, int position, long id)
    {
        Intent i=new Intent(ListViewA.this,ListViewA.class);
        startActivity(i);
    }

};
}
4

6 回答 6

5

以下示例向您展示如何为特定位置传递数据 onItemClick。

ListView lv = getListView();

            // listening to single list item on click
            lv.setOnItemClickListener(new OnItemClickListener() {
              public void onItemClick(AdapterView<?> parent, View view,
                  int position, long id) {

                  // selected item
                HERE YOU GOT POSITION FOR PERTICULAR ITEM

                  // Launching new Activity on selecting single List Item
                  Intent i = new Intent(getApplicationContext(), SingleListItem.class);
                  // sending data to new activity
                  i.putExtra("position", fillMaps.get(position));
                  startActivity(i);

              }
            });

是的,您需要声明fillMaps为全局。

public class ListViewA extends Activity{

    List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>();
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);......
于 2013-03-16T08:43:48.443 回答
2
Intent i=new Intent(ListViewA.this,ListViewA.class);
i.putExtra("Key", fillMaps.get(position));

startActivity(i);

您可以在 onItemClickListner 中使用上述代码。

于 2013-03-16T08:53:20.970 回答
0

在这种方法中,第三个参数是位置。所以你必须使用这个,例如。您传递给 listView 的 Arraylist 包含 listView 上显示的数据。所以使用这种代码

@Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
        // TODO Auto-generated method stub
    String data=    mArrlist.get(position);
    }

如果您使用的是 String 类型的 arralist,否则如果您使用的是 getter setter 类的 arraylist,则使用

  mArralist.get(potion).getName();
于 2013-03-16T08:49:55.580 回答
0

你应该得到项目@paticular 位置

HashMap<String, String> item = adapterview.getAdapter().getItem(position);

根据要求检查您的状况,并从中获取数据item并进一步处理。

Intent i=new Intent(ListViewA.this,ListViewA.class);
i.putExtra("item", item);
startActivity(i);
于 2013-03-16T08:59:56.917 回答
0

要添加任意数字,您可以使用 java 的 Random 类,如下所示
Random mRandom = new Random(); int 随机 = mRandom.nextInt(mMoveToList.size());

int 类型的随机变量每次返回随机值。

于 2013-03-16T09:09:23.597 回答
0

你可以getItem(int position)使用SimpleAdapter

  1. 将您的 SimpleAdapter 变量adapter作为全局变量
  2. 在您的 ClickListener 调用中adapter.getItem(position)
于 2015-07-07T10:24:17.113 回答