在AdapterView问题中从另一个布局传递EditText值作为IntentExtra

时间:2015-03-11 09:00:07

标签: android android-listview

我正在使用AdapterView作为ListView,我们可以在其中找到列表视图和EditText的活动。

当我们点击ListView的一个元素时,我们转到第二个活动,并且我想将所选项目的数据作为intent中的额外项目发送。此数据将显示在EditText中

我尝试了这段代码,但它似乎不起作用,它始终显示EditText的默认值。

这是适配器视图的代码:

public class adapterq extends ArrayAdapter<Questionaire> {
Bitmap image;


public adapterq(Context context, ArrayList<Questionaire> questionaires) {
   super(context, 0, questionaires);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
   
   final Questionaire c = getItem(position);    
   
   View  convertView2;
   if (convertView == null) {
      convertView = LayoutInflater.from(getContext()).inflate(R.layout.customquest, parent, false);
      convertView2 = LayoutInflater.from(getContext()).inflate(R.layout.activity_main, parent, false);
   }else{
    convertView2 = (View) convertView.getTag();
   }




   TextView q = (TextView) convertView.findViewById(R.id.textView1);
   final EditText name =     (EditText) convertView2.findViewById(R.id.editText1);


   q.setText(c.getLabel()); 

   convertView.setOnClickListener(new OnClickListener(){
 @Override
     public void onClick(View v) {
      Intent intent = new Intent();
      intent.setClass(getContext(), Questions.class);
      intent.putExtra("name", name.getText().toString());
      intent.putExtra("category", c.getCode());
      getContext().startActivity(intent); 
      v.setBackgroundResource(R.drawable.yourbackground);
      ((Activity) getContext()).overridePendingTransition(R.anim.right_slide_in, R.anim.right_slide_out);
   
    		 

    }

    });
   convertView.setTag(convertView2);
   return convertView;
}

}

enter image description here

1 个答案:

答案 0 :(得分:1)

您应该使用ListView.setOnItemClickListener()代替。回调返回单击列表中的位置和视图。该位置用于检索数据对象Questionere。 可以使用EditText检索findViewById()

ListView list = (ListView) findViewById(R.id.listview);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
     @Override
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
         Questionaire item = list.getItemAtPosition(position);
         String name = ((EditText) findViewById(R.id.editText1)).getText().toString();
         Intent intent = new Intent();
         intent.setClass(getContext(), Questions.class);
         intent.putExtra("name", name);
         intent.putExtra("category", item.getCode());
         startActivity(intent); 
     } 
});
相关问题