单击按钮

时间:2015-11-17 07:10:21

标签: java android listview android-listview

我是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'的执行失败。   编译失败;有关详细信息,请参阅编译器错误输出。

3 个答案:

答案 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()