简体   繁体   中英

error to add EditText value to ListView using BaseAdapter by clicking Button

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM