gpt4 book ai didi

java - 由于在 TextView 中设置值而导致您自己的 ListView 出现问题

转载 作者:行者123 更新时间:2023-12-02 03:01:17 24 4
gpt4 key购买 nike

按下按钮后,我转到 SecondActivity,输入数据,然后按下按钮后返回到 MainActivity。我在 onActivityResult 方法中创建一个对象,然后将其分配给对象数组。我将带有对象的数组发送到适配器。不幸的是,当我尝试启用该应用程序时,我收到消息:“应用程序已停止”。

我没有收到任何与错误相关的消息,但我注意到应用程序由于这些代码行而无法工作。因为当我删除它们时,应用程序会打开,我可以在这些代码行中更改什么?:

 holder.nameProduct.setText(object.name); //THIS LINE ???
holder.priceProduct.setText(String.valueOf(object.price));//THIS LINE ???

下面我附上完整代码:

主要 Activity :

public class MainActivity extends AppCompatActivity {

ListView listView;
Button button_secondActivity;
TextView textView_totalPrice;
private static final int REQUEST_CODE = 1;
static int indexArray = 0;

Item items [] = new Item[10];

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

button_secondActivity = findViewById(R.id.button);
textView_totalPrice = findViewById(R.id.textView);
listView = findViewById(R.id.itemsList);

button_secondActivity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

Intent i = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(i, REQUEST_CODE);
}
});




RowAdapter adapter = new RowAdapter(this, R.layout.row_element, items);
listView.setAdapter(adapter);

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent i) {
if ((requestCode == REQUEST_CODE) && (resultCode == RESULT_OK)) {

String nameProduct = i.getStringExtra("nameProduct");
int priceProduct = i.getIntExtra("priceProduct", 0);

Item item = new Item(priceProduct, nameProduct);

items[indexArray] = item;

indexArray++;
}
}
}

第二个 Activity :

public class SecondActivity extends AppCompatActivity {

EditText editText_priceProduct, editText_nameProduct;
Button button_enterData;

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

editText_priceProduct = findViewById(R.id.editText);
editText_nameProduct = findViewById(R.id.editText2);
button_enterData = findViewById(R.id.button2);

button_enterData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

finish();
}
});
}

public void finish() {

String nameProduct;
int priceProduct;

nameProduct = editText_nameProduct.getText().toString();
priceProduct = Integer.parseInt(editText_priceProduct.getText().toString());

Intent i = new Intent(SecondActivity.this, MainActivity.class);
i.putExtra("nameProduct", nameProduct);
i.putExtra("priceProduct", priceProduct);

setResult(RESULT_OK, i);
super.finish();

}
}

适配器:

public class RowAdapter extends ArrayAdapter<Item> {

Context context;
int layoutResourceId;
Item items[] = null;

public RowAdapter(Context context, int layoutResourceId, Item items []) {
super(context, layoutResourceId, items);

this.context = context;
this.layoutResourceId = layoutResourceId;
this.items = items;
}

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

View view = convertView;
ItemsHolder holder = null;

if(view == null) {

LayoutInflater inflater = ((Activity)context).getLayoutInflater();
view = inflater.inflate(layoutResourceId, parent, false);

holder = new ItemsHolder();
holder.nameProduct = view.findViewById(R.id.textView3);
holder.priceProduct = view.findViewById(R.id.textView2);

view.setTag(holder);
}

else {

holder = (ItemsHolder) view.getTag();
}

Item object = items[position];
holder.nameProduct.setText(object.name); //THIS LINE ???
holder.priceProduct.setText(String.valueOf(object.price));//THIS LINE ???


return view;
}
}



class ItemsHolder {

TextView nameProduct, priceProduct;
}

项目:

public class Item {

int price;
String name;

public Item(int price, String name) {
this.price = price;
this.name = name;
}

public int getPrice() {
return price;
}

public String getName() {
return name;
}
}

最佳答案

请尝试以下编辑并回复我:

@Override
public View getView(int position, View view, ViewGroup parent) {
ItemsHolder holder;
LayoutInflater inflater = LayoutInflater.from(context);
view = inflater.inflate(layoutResourceId, parent, false);
holder = new ItemsHolder();
holder.nameProduct = view.findViewById(R.id.textView3);
holder.priceProduct = view.findViewById(R.id.textView2);
Item object = items[position];
holder.nameProduct.setText(object.getName());
holder.priceProduct.setText(String.valueOf(object.getPrice()));
return view;
}

关于java - 由于在 TextView 中设置值而导致您自己的 ListView 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57050694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com