0

ベースアダプタを拡張するlistviewアダプタを使用してリストビューを作成しました。

正常に動作します。しかし、onitemClickリスナーをlistviewに追加する必要があります。リストアイテムをクリックすると、listitemと一緒に別のアクティビティに移動します。これを行うにはどうすればよいですか?

これはリストビューアダプタの私のコードです

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;
    }
}

そして、メインアクティビティのリストアイテムに次のように入力しました

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);
4

4 に答える 4

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);
   }
 });
于 2013-03-11T11:17:30.920 に答える
1

次のように、リストビューに onItemClickListener を作成します。

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

于 2013-03-11T11:16:34.537 に答える
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);
}
});
于 2013-03-11T11:20:20.353 に答える
1

リストアイテムと一緒に

ListItem からデータを取得したい場合は、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);

2 番目のアクティビティで取得します。

 Bundle extras = getIntent().getExtras();
 String one = extras.getStringExtra("One");
 String two = extras.getStringExtra("Two");
于 2013-03-11T11:21:17.207 に答える