【发布时间】:2014-02-17 07:53:21
【问题描述】:
我有一个listview,它的行由一些编辑文本组成。我的问题是它的值在滚动时会自动改变。我尝试了很多方法,但没有一个有效。有没有与此相关的例子?有人请帮帮我
public class MainActivity extends Activity {
private ListView myList;
private CustomAdapter myAdapter;
Context context;
private String[] guess = new String[20];
ArrayList<String> list_id = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for(int i=0;i<19;i++){
list_id.add(""+i);
guess[i] = i+"";
}
myList = (ListView) findViewById(R.id.listView1);
myList.setItemsCanFocus(true);
initList();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public void initList()
{
ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(this, R.id.textView1, guess)
{
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
if (convertView == null)
{
convertView = LayoutInflater.from(getContext()).inflate(R.layout.row, null);
}
final String theData = getItem(position);
final EditText editText = (EditText) convertView.findViewById(R.id.editText1);
//editText.setText(theData);
editText.setText(guess[position]);
editText.addTextChangedListener(
new MyTextWatcher(position)
);
return convertView;
}
};
myList.setAdapter(listAdapter);
}
class MyTextWatcher implements TextWatcher {
private int position;
public MyTextWatcher(int position) {
this.position = position;
}
public void afterTextChanged(Editable s) {
guess[position] = s.toString();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
// other methods are created, but empty
}
}
【问题讨论】:
-
发布您尝试过的代码,以便解决问题。
-
将 if-else 放入适配器的
getView()中,如果可用,则设置为 edittext 的值,否则只需设置空文本。 -
仍然无法正常工作:(
-
你总是有 20 行吗?如果是这样,也许考虑不使用 ListView,因为 ListView 将回收行,并且当行被回收时可能难以保留 EditTexts 中的内容。
-
No..我只是用 20 来测试它。它会有所不同。
标签: android android-listview android-edittext android-arrayadapter