i am new to android,help with the code how add EditText value to ListView using BaseAdapter by clicking Button. when i enter value in EditText and by clicking Add Button, value must place in ListViw(ListView must have BaseAdapter only). here tried with code found with error,help me to complete my code
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);
}
}
}
my error
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.
Actually you're doing wrong here.
myViewHolder.mydata.setText(listDataActivity.getMyData());
mydata is just a String
. It's not an Object of EditText
. So better to add EditText in your ViewHolder
. and initialized it before used.
In your AddListActivity.java, myData is String. So you cannot use
listDataActivity.setMyData(myData[i]);
Its represent to the array. simply call your getDataInList() method inside onclick method
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myData=edtName.getText().toString().trim();
getDataInList();
((BaseAdapter)lstName.getAdapter()).notifyDataSetChanged();
}
});
and inside getDataInList(), remove for loop and use just myData, not myData[i].
Make your adapter as global,and Set adapter to listview.
something like this:
adapter = new MyBaseAdapterActivity(context, list);
lstName.setAdapter(adapter);
Set editText data to ListDataACtivity.
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String myData=edtName.getText().toString().trim();
getDataInList(myData);
adapter.notifyDataSetChanged();
}
});
Change your getDataInList() to:
private void getDataInList(String myData) {
ListDataActivity listDataActivity = new ListDataActivity();
listDataActivity.setMyData(myData);
list.add(listDataActivity);
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.