Java 将项添加到ListView适配器中的特定列
我有一个Java 将项添加到ListView适配器中的特定列,java,android,listview,android-adapter,Java,Android,Listview,Android Adapter,我有一个增量系统,我想在onClick时将对话框警报中的值保存在列表视图适配器的一列中 这是我的适配器: public class VanzatorProduseList extends ArrayAdapter<VanzatorProduse> { private Activity context; private SparseBooleanArray selectedListItemsIds; private List<VanzatorProduse> vanzat
增量系统
,我想在onClick
时将对话框警报
中的值保存在列表视图适配器
的一列中
这是我的适配器
:
public class VanzatorProduseList extends ArrayAdapter<VanzatorProduse> {
private Activity context;
private SparseBooleanArray selectedListItemsIds;
private List<VanzatorProduse> vanzatorProduseList;
public VanzatorProduseList(Activity context, List<VanzatorProduse> vanzatorProduseList){
super(context, R.layout.list_produse_vanzator, vanzatorProduseList);
this.context = context;
selectedListItemsIds = new SparseBooleanArray();
this.vanzatorProduseList = vanzatorProduseList;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View listViewItem = inflater.inflate(R.layout.list_produse_vanzator, null, true);
TextView textViewProdus1 = (TextView) listViewItem.findViewById(R.id.textViewProdus1);
TextView textViewPret1 = (TextView) listViewItem.findViewById(R.id.textViewPret1);
final TextView textViewCantitate1 = (TextView) listViewItem.findViewById(R.id.textViewCantitate1);
final VanzatorProduse vanzatorProduse = vanzatorProduseList.get(position);
textViewProdus1.setText(vanzatorProduse.getProdus());
textViewPret1.setText(vanzatorProduse.getPret());
textViewCantitate1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// custom dialog
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.dialog_alert);
dialog.setTitle("Alege Canitatea");
// set the custom dialog components - text, image and button
final Button dialogBtn = (Button) dialog.findViewById(R.id.dialog_btn);
final ElegantNumberButton elegantNumberButton = (ElegantNumberButton) dialog.findViewById(R.id.elegantNumberButton);
// if button is clicked, close the custom dialog
dialogBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String num = elegantNumberButton.getNumber();
vanzatorProduseList.add(num);
dialog.dismiss();
}
});
dialog.show();
}
});
return listViewItem;
}
'add(com.dev.darius.neglije.Vanzator.ListaProduse.VanzatorProduse)' in 'java.util.List' cannot be applied to '(java.lang.String)'
错误:
public class VanzatorProduseList extends ArrayAdapter<VanzatorProduse> {
private Activity context;
private SparseBooleanArray selectedListItemsIds;
private List<VanzatorProduse> vanzatorProduseList;
public VanzatorProduseList(Activity context, List<VanzatorProduse> vanzatorProduseList){
super(context, R.layout.list_produse_vanzator, vanzatorProduseList);
this.context = context;
selectedListItemsIds = new SparseBooleanArray();
this.vanzatorProduseList = vanzatorProduseList;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View listViewItem = inflater.inflate(R.layout.list_produse_vanzator, null, true);
TextView textViewProdus1 = (TextView) listViewItem.findViewById(R.id.textViewProdus1);
TextView textViewPret1 = (TextView) listViewItem.findViewById(R.id.textViewPret1);
final TextView textViewCantitate1 = (TextView) listViewItem.findViewById(R.id.textViewCantitate1);
final VanzatorProduse vanzatorProduse = vanzatorProduseList.get(position);
textViewProdus1.setText(vanzatorProduse.getProdus());
textViewPret1.setText(vanzatorProduse.getPret());
textViewCantitate1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// custom dialog
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.dialog_alert);
dialog.setTitle("Alege Canitatea");
// set the custom dialog components - text, image and button
final Button dialogBtn = (Button) dialog.findViewById(R.id.dialog_btn);
final ElegantNumberButton elegantNumberButton = (ElegantNumberButton) dialog.findViewById(R.id.elegantNumberButton);
// if button is clicked, close the custom dialog
dialogBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String num = elegantNumberButton.getNumber();
vanzatorProduseList.add(num);
dialog.dismiss();
}
});
dialog.show();
}
});
return listViewItem;
}
'add(com.dev.darius.neglije.Vanzator.ListaProduse.VanzatorProduse)' in 'java.util.List' cannot be applied to '(java.lang.String)'
这里我被卡住了,我想在名为textviewcontitate1
的textviewcontitate1中显示
希望您理解。您正在尝试将字符串
类型添加到列表vanzatorProduseList
中。只能将VanzatorProduse
类型添加到vanzatorProduseList
列表中。因此,问题的原因是:
String num = elegantNumberButton.getNumber();
vanzatorProduseList.add(num);
在代码中有以下行:
final VanzatorProduse vanzatorProduse = vanzatorProduseList.get(position);
textViewProdus1.setText(vanzatorProduse.getProdus());
textViewPret1.setText(vanzatorProduse.getPret());
因此,您可以将num
值添加到vanzatorProduse.setProdus(num)
或任何其他适当字段中,然后将其添加到列表中:
vanzatorProduseList.add(vanzatorProduse);
您正在尝试将字符串
类型添加到列表vanzatorProduseList
中。只能将VanzatorProduse
类型添加到vanzatorProduseList
列表中。因此,问题的原因是:
String num = elegantNumberButton.getNumber();
vanzatorProduseList.add(num);
在代码中有以下行:
final VanzatorProduse vanzatorProduse = vanzatorProduseList.get(position);
textViewProdus1.setText(vanzatorProduse.getProdus());
textViewPret1.setText(vanzatorProduse.getPret());
因此,您可以将num
值添加到vanzatorProduse.setProdus(num)
或任何其他适当字段中,然后将其添加到列表中:
vanzatorProduseList.add(vanzatorProduse);
如@jibrahim在之前的回答中所述:
您正在尝试将字符串类型添加到列表vanzatorProduseList中。只能将VanzatorProduse类型添加到vanzatorProduseList列表中。因此,问题的原因是:
String num = elegantNumberButton.getNumber();
vanzatorProduseList.add(num);
您需要这样做创建自定义类的对象并为其赋值:
但是您的自定义调用应该有方法来解决这种类型的问题
编辑:不要忘记调用notifyDataSetChanged()方法来刷新列表,如@jibrahim在前面的回答中所述:
您正在尝试将字符串类型添加到列表vanzatorProduseList中。只能将VanzatorProduse类型添加到vanzatorProduseList列表中。因此,问题的原因是:
String num = elegantNumberButton.getNumber();
vanzatorProduseList.add(num);
您需要这样做创建自定义类的对象并为其赋值:
但是您的自定义调用应该有方法来解决这种类型的问题
编辑:不要忘记调用notifyDataSetChanged()方法来刷新列表您正试图在VanzatorProduse
元素的列表中添加字符串
。它无法工作,您必须向该列表添加一个VanzatorProduse
对象。您正试图在VanzatorProduse
元素的列表中添加一个字符串。它无法工作,您必须向该列表添加一个VanzatorProduse
对象—您不能只添加它。您必须将此信息放入VanzatorProduse
对象中,然后将此对象添加到list@pleftsure和@Clau应该知道将num
值分配到VanzatorProduse
的确切位置,您不能只添加它。您必须将此信息放入VanzatorProduse
对象中,然后将此对象添加到list@pleftsure和@Clau应该知道将num
值分配到VanzatorProduse
的确切位置。您还应该调用notifyDataSetChanged()来刷新列表视图。对不起,我是java新手。。但是从这里开始,如何在我的TetxView(textviewcantitate)中显示结果?像这些文本视图(textviewprodust,textviewpret)一样,您只需在关闭textviewcantitate.setText(String.valueOf(num))
中执行即可;但是,如果我没有记错,您要求更新列表,可以通过调用yourListAdapter.notifyDataSetChanged()
轻松完成。您还应该调用notifyDataSetChanged()来刷新列表视图。对不起,我是java新手。。但是从这里开始,如何在我的TetxView(textviewcantitate)中显示结果?像这些文本视图(textviewprodust,textviewpret)一样,您只需在关闭textviewcantitate.setText(String.valueOf(num))
中执行即可;但是,如果我没有记错,您要求更新列表,可以通过调用yourListAdapter.notifyDataSetChanged()