我是 android 的新手,请帮助编写代码,了解如何通过单击按钮使用 BaseAdapter 将 EditText 值添加到 ListView。 当我在 EditText 中输入值并单击添加按钮时,值必须放在 ListViw 中(ListView 必须只有 BaseAdapter)。 在这里尝试发现错误的代码,帮助我完成我的代码
ListDataActivity.java
public class ListDataActivity {
String myData;
public String getMyData() {
return myData;
}
public void setMyData(String myDataa) {
myData = myDataa;
}
}
BaseAdapterActivity.java
public class MyBaseAdapterActivity extends BaseAdapter {
ArrayList<ListDataActivity> list = new ArrayList<ListDataActivity>();
LayoutInflater inflater;
Context context;
public MyBaseAdapterActivity(Context context, ArrayList<ListDataActivity> list) {
this.list = list;
this.context = context;
inflater = LayoutInflater.from(this.context);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MyViewHolder myViewHolder;
if (convertView == null) {
convertView = inflater.inflate(R.layout.activity_addlist, parent, false);
myViewHolder = new MyViewHolder(convertView);
convertView.setTag(myViewHolder);
} else {
myViewHolder = (MyViewHolder) convertView.getTag();
}
ListDataActivity listDataActivity = getItemId(position);
myViewHolder.mydata.setText(listDataActivity.getMyData());
return convertView;
}
private class MyViewHolder {
String mydata;
public MyViewHolder(View item) {
mydata = (ListView) item.findViewById(R.id.myData);
}
}
}
AddListActivity.java
public class AddlistActivity extends Activity {
ListView lstName;
Button btnAdd;
EditText edtName;
String myData;
Context context = AddlistActivity.this;
ArrayList<ListDataActivity> list = new ArrayList<ListDataActivity>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_addlist);
lstName = (ListView) findViewById(R.id.lst_name);
btnAdd = (Button) findViewById(R.id.btn_add);
edtName = (EditText) findViewById(R.id.edt_name);
getDataInList();
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myData = edtName.getText().toString().trim();
}
});
lstName.setAdapter(new MyBaseAdapterActivity(context, list));
}
private void getDataInList() {
for (int i = 0; i < myData.length(); i++) {
ListDataActivity listDataActivity = new ListDataActivity();
listDataActivity.setMyData(myData[i]);
list.add(listDataActivity);
}
}
}
我的错误
Error:(48, 46) error: array required, but String found C:\Users\Rahul\Documents\AndroidStudioWorkSpace\LoginDataBaseTask\app\src\main\java\com\example\rahul\logindatabasetask\MyBaseAdapterActivity.java Error:(57, 54) error: incompatible types: long cannot be converted to ListDataActivity Error:(59, 28) error: cannot find symbol method setText(String) Error:(68, 52) error: cannot find symbol variable myData Error:(68, 20) error: incompatible types: ListView cannot be converted to String Error:Execution failed for task ':app:compileDebugJavaWithJavac'. Compilation failed; see the compiler error output for details.
最佳答案
实际上你在这里做错了。
myViewHolder.mydata.setText(listDataActivity.getMyData());
mydata 只是一个 String
。它不是 EditText
的对象。所以最好在您的 ViewHolder
中添加 EditText。并在使用前对其进行初始化。
关于java - 通过单击按钮使用 BaseAdapter 将 EditText 值添加到 ListView 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33751092/