RT,我建立了一个listview里面有1个edittext 一个 textview 我想取得 多个edittext中的不同值。  我研究了好久。。就是不行。。我用了edittext 增加change监听在运用2维数组这样也只能取到第1个 item中的edittext的值
  
  EditText_Add_01=(EditText)listview.getAdapter().getView(0, null, null).findViewById(R.id.EditText_Add_01);  我用这个取出来的又是空值。。各种办法用了很多,baidu google也没答案求高手帮助。。
  public class MyAdapter extends BaseAdapter {
private LayoutInflater inflater;
private int num; public MyAdapter(Context c) {
this.inflater = LayoutInflater.from(c);
} public View getView(int position, View convertView, ViewGroup parent) {
View myView = inflater.inflate(R.layout.addlist, null);
TextView textView = (TextView) myView
.findViewById(R.id.TextView_Add_01);
num = position + 1;
textView.setText(num + "  .");
return myView;
} @Override
public int getCount() {
return time;
} @Override
public Object getItem(int position) { return null;
} @Override
public long getItemId(int position) {
return 0;
}
}

解决方案 »

  1.   

    给你的listview中的每一项添加一个tag,tag里面的内容就是每一项Edittext中的内容,然后在外面调用getTag方法取出每一项的值。
      

  2.   


    具体怎么实现呢 怎样才能让tag里面的内容就是每一项Edittext中的内容呢
    在public View getView(int position, View convertView, ViewGroup parent) {
    中不能取得Edittext的值,因为我还没在输入框中输入啊、、我有一个按钮,就是按了这个按钮才取得所有item中的Edittext的值。。谢谢能帮忙下么
      

  3.   

    你们可以看一下这个帖子,我们的问题比较相似
    http://topic.csdn.net/u/20100722/17/c9e74a1c-44fc-4075-a6ad-0336e87deef4.html谢谢大家,帮帮忙啊
      

  4.   

    我在getitem
    public Object getItem(int position) {
    EditText_Add_01 = (EditText) findViewById(R.id.EditText_Add_01);
    return EditText_Add_01;
    }EditText cc1 = (EditText) listview.getAdapter().getItem(0);
    EditText cc2 = (EditText) listview.getAdapter().getItem(1);
    String ccc = cc1.getText().toString();
    String ccc2 = cc2.getText().toString();中这样改只能取得第一项的内容。。不能定位到每项。。
    这样取出来的值都是一样的
      

  5.   

    试下这个package sim.feel;import java.util.ArrayList;import android.app.Activity;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.View;
    import android.widget.ArrayAdapter;
    import android.widget.EditText;
    import android.widget.ListView;public class ATest extends Activity {
    private ListView myListView;
    private EditText myEditText;
    private ArrayList<String> myArrayList;
    private ArrayAdapter<String> myArrayAdapter; @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    myEditText = (EditText) findViewById(R.id.myEditText);
    myListView = (ListView) findViewById(R.id.myListView);

    myArrayList = new ArrayList<String>();
    myArrayAdapter = new ArrayAdapter<String>(this,
    android.R.layout.simple_list_item_1, myArrayList);
    myListView.setAdapter(myArrayAdapter); myEditText.setOnKeyListener(new View.OnKeyListener() { @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub
    if (event.getAction() == KeyEvent.ACTION_DOWN) {
    if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
    myArrayList.add(0, myEditText.getText().toString());
    myArrayAdapter.notifyDataSetChanged();
    myEditText.setText("");
    return true;
    }
    return false;
    }
    return false;
    }
    });
    }
    }
      

  6.   


    public View getView(int position, View convertView, ViewGroup parent) {
    View myView = inflater.inflate(R.layout.addlist, null);
    TextView textView = (TextView) myView
    .findViewById(R.id.TextView_Add_01);
    num = position + 1;
    textView.setText(num + " .");
    return myView;
    }先说个建议,最好别这么写,不然界面刷新会很慢的,不要每次getview中都去重新inflate,很耗时的,就第一次inflate就行,然后记录下来成员变量myview,以后就用记录的这个成员变量。 EditText_Add_01=(EditText)listview.getAdapter().getView(0, null, null).findViewById(R.id.EditText_Add_01);
    这么写也有问题,getView不需要你手动去调,这个是需要显示时系统去调用。
      

  7.   

    最笨的方法,定义一个Edittext的数组,list有多少项,就有多少个Edittext,数组索引对应list每项的索引
      

  8.   

    仿照apidemos里list14的方式,定义一个ViewHolder类,然后holder里有两个成员,一个TextView,一个EditText,定义个list<ViewHolder> mlist数组,为成员变量,然后将列表里每项对应的ViewHolder都保存到这个mlist数组里,这样以后不管你是点击获取也好,还是在任何地方获取list内容也好,直接用这个mlist就可以了 
      

  9.   


    这个方法我用过。。不能主要是edittext我假设我有 6个 要分开保存6个值 ,不知道在哪开始一个一个保存,因为我是要在按钮同时获取,开始我在public View getView(int position, View convertView, ViewGroup parent) {
    中保存,发现这个方法在我进入该项的时候就执行完了,我输入文本的时候他取得的就是空值。。
    后来我在里面定义了一个文本改变的监听,可以取得值。==我写下代码给你看,这个好像恩
      

  10.   

    String[][]aa=new String [100][100];
    int a=0;                        位子1
    public View getView(int position, View convertView, ViewGroup parent) {
                            位子2; 
    View myView = inflater.inflate(R.layout.addlist, null);
    TextView textView = (TextView) myView
    .findViewById(R.id.TextView_Add_01);
    EditText_Add_01 = (EditText) myView
    .findViewById(R.id.EditText_Add_01);
                            int c= position
    EditText_Add_01.addTextChangedListener(new TextWatcher(){ @Override
    public void afterTextChanged(Editable s) {
    // TODO Auto-generated method stub

    aa[c][a++]=s.toString();
    } @Override
    public void beforeTextChanged(CharSequence arg0, int arg1,
    int arg2, int arg3) {
    // TODO Auto-generated method stub

    } @Override
    public void onTextChanged(CharSequence s, int start,
    int before, int count) {
    // TODO Auto-generated method stub

    }

    });
    num = position + 1;
    textView.setText(num + "  .");
    return myView;
    }我这样取可以取到第一个,但是那个a不知道在哪里初始化0,位子1不让写,位子2写了就取空值了。。