我是android的新手,帮助代码如何使用BaseAdapter通过单击Button将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);
}
}
}
我的错误
错误:(48,46)错误:需要数组,但找到了String C:\用户\的Rahul \文件\ AndroidStudioWorkSpace \ LoginDataBaseTask \应用\ SRC \主\的java \ COM \示例\的Rahul \ logindatabasetask \ MyBaseAdapterActivity.java 错误:(57,54)错误:不兼容的类型:long无法转换为ListDataActivity 错误:(59,28)错误:找不到符号方法setText(String) 错误:(68,52)错误:找不到符号变量myData 错误:(68,20)错误:不兼容的类型:ListView无法转换为String 错误:任务':app:compileDebugJavaWithJavac'的执行失败。 编译失败;有关详细信息,请参阅编译器错误输出。
答案 0 :(得分:1)
其实你在这里做错了。
addr-4 = [3]
mydata 只是 myViewHolder.mydata.setText(listDataActivity.getMyData());
。它不是String
的对象。最好在EditText
中添加 EditText 。并在使用前初始化它。
答案 1 :(得分:0)
在AddListActivity.java中,myData是String。所以你不能使用
listDataActivity.setMyData(myData[i]);
它代表数组。只需在onclick中调用你的getDataInList()方法 方法
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myData=edtName.getText().toString().trim();
getDataInList();
((BaseAdapter)lstName.getAdapter()).notifyDataSetChanged();
}
});
并在getDataInList()内部,删除for循环并仅使用myData,而不是myData [i]。
答案 2 :(得分:0)
使您的适配器成为全局,并将适配器设置为listview。
类似的东西:
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String myData=edtName.getText().toString().trim();
getDataInList(myData);
adapter.notifyDataSetChanged();
}
});
将editText数据设置为ListDataACtivity。
private void getDataInList(String myData) {
ListDataActivity listDataActivity = new ListDataActivity();
listDataActivity.setMyData(myData);
list.add(listDataActivity);
}
将getDataInList()更改为:
shell_exec()