Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在ListView中设置计数器应用程序_Java_Android_Listview_Android Listview_Baseadapter - Fatal编程技术网

Java 如何在ListView中设置计数器应用程序

Java 如何在ListView中设置计数器应用程序,java,android,listview,android-listview,baseadapter,Java,Android,Listview,Android Listview,Baseadapter,首先,我创建了一个计数器应用程序,它有两个按钮和一个EditText,其中一个按钮具有增加计数的功能,而另一个按钮具有减少计数的功能,这些结果显示在EditText中。 现在我想把这个计数器应用程序放在ListView中。ListView中至少需要放置10个计数器应用程序。我尝试了一些代码,下面会附上一些图片 我的代码附在下面 反作用 public class CounterActivity extends AppCompatActivity { private ListView lstC

首先,我创建了一个计数器应用程序,它有两个按钮和一个EditText,其中一个按钮具有增加计数的功能,而另一个按钮具有减少计数的功能,这些结果显示在EditText中。 现在我想把这个计数器应用程序放在ListView中。ListView中至少需要放置10个计数器应用程序。我尝试了一些代码,下面会附上一些图片

我的代码附在下面

反作用

public class CounterActivity extends AppCompatActivity {

private ListView lstCount;
private CustomAdapter adapter;
private ArrayList<CountModel> mCount = new ArrayList<CountModel>();
final Context context = this;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_counter);

    lstCount = (ListView)findViewById(R.id.lst_counter);
    adapter = new CustomAdapter(this,mCount);
    lstCount.setAdapter(adapter);
}}
自定义适配器

public class CustomAdapter extends BaseAdapter {

int counter = 0;
int maxcounter=20;

private ArrayList<CountModel>mCount = new ArrayList<CountModel>();
Context context;

public CustomAdapter(Context context, ArrayList<CountModel> count) {
    this.context = context;
    this.mCount=count;
}

@Override
public int getCount() {
    return mCount.size();
}

@Override
public Object getItem(int position) {
    return mCount.get(position);
}

@Override
public long getItemId(int position) {
    return mCount.indexOf(getItemId(position));
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    MyViewHolder myViewHolder = null;
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {
        convertView = inflater.inflate(R.layout.activity_counter, null);
        myViewHolder = new MyViewHolder();
        myViewHolder.btnDec = (Button) convertView.findViewById(R.id.btn_dec);
        myViewHolder.btnInc = (Button) convertView.findViewById(R.id.btn_inc);
        myViewHolder.edtCount = (EditText) convertView.findViewById(R.id.edt_count);
        convertView.setTag(myViewHolder);
    } else {
        myViewHolder = (MyViewHolder) convertView.getTag();
    }
    final String mEdtCount = myViewHolder.edtCount.toString();
    myViewHolder.edtCount.setOnEditorActionListener(mCount.get(position).getEdtCount());
    myViewHolder.btnDec.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (counter >0 && counter <=20) {
                counter--;
                mEdtCount.setText(Integer.toString(counter));
            }else
            if (counter<0){
                mEdtCount.setText(Integer.toString(counter));
            }

        }
    }.mCount.get(position).getBtnDec());
    myViewHolder.btnInc.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            counter++;
            if (counter >0 && counter <=20) {
                mEdtCount.setText(Integer.toString(counter));
            }else if(counter >20){
                counter--;
                mEdtCount.setText(Integer.toString(maxcounter));
            }

        }
    }.mCount.get(position).getBtnInc());

    return convertView;

}

private class MyViewHolder {

    Button btnInc;
    Button btnDec;
    EditText edtCount;
}}
尝试更改此选项:

final String mEdtCount = myViewHolder.edtCount.toString();
为此:

final EditText mEdtCount = myViewHolder.edtCount;

将此编码部分替换为您的代码

final String mEdtCount = myViewHolder.edtCount.getText().toString();
myViewHolder.edtCount.setOnEditorActionListener(mCount.get(position).getEdtCount());
myViewHolder.btnDec.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (counter >0 && counter <=20) {
            counter--;
            myViewHolder.edtCount.setText(Integer.toString(counter));
        }else
        if (counter<0){
            myViewHolder.edtCount.setText(Integer.toString(counter));
        }

    }
}.mCount.get(position).getBtnDec());
myViewHolder.btnInc.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        counter++;
        if (counter >0 && counter <=20) {
            myViewHolder.edtCount.setText(Integer.toString(counter));
        }else if(counter >20){
            counter--;
            myViewHolder.edtCount.setText(Integer.toString(maxcounter));
        }

    }
}.mCount.get(position).getBtnInc());
final String mEdtCount=myViewHolder.edtCount.getText().toString();
myViewHolder.edtCount.setOnEditorActionListener(mCount.get(position.getEdtCount());
myViewHolder.btnDec.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){

如果(counter>0&&counter)您做了错误的事情,没有正确获取edittext,而是使用了字符串,这就是发生错误的原因。仍然面临这些错误
error:(61,89)错误:不兼容的类型:edittext无法转换为OnEditorActionListener错误:(74,10)错误:找不到符号变量mCount错误:(87,10)错误:找不到符号变量mCount注意:某些消息已被简化;使用-Xdiags:verbose重新编译以获取完整输出错误:任务执行失败“:app:compiledBugJavaWithJavaC.”>编译失败;有关详细信息,请参阅编译器错误输出。
为什么使用setOnEditorActionListener?它的用途是什么?显示单击“增加”和“减少”按钮时计数器的结果用于文本视图的编辑或操作侦听器,因此最好在查看代码时使用显示文本视图,因为所有其他操作都可以解决问题
final EditText mEdtCount = myViewHolder.edtCount;
final String mEdtCount = myViewHolder.edtCount.getText().toString();
myViewHolder.edtCount.setOnEditorActionListener(mCount.get(position).getEdtCount());
myViewHolder.btnDec.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (counter >0 && counter <=20) {
            counter--;
            myViewHolder.edtCount.setText(Integer.toString(counter));
        }else
        if (counter<0){
            myViewHolder.edtCount.setText(Integer.toString(counter));
        }

    }
}.mCount.get(position).getBtnDec());
myViewHolder.btnInc.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        counter++;
        if (counter >0 && counter <=20) {
            myViewHolder.edtCount.setText(Integer.toString(counter));
        }else if(counter >20){
            counter--;
            myViewHolder.edtCount.setText(Integer.toString(maxcounter));
        }

    }
}.mCount.get(position).getBtnInc());