[英]Making a Listview editable in Android
我正在制作一个FuelLog应用程序,以记录加油站的加油情况。 我在使用onItemClick修改每个项目的ArrayList中的对象属性时遇到麻烦。 换句话说,我想做的是能够单击列表中的其中一个燃料日志并进行编辑。
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
}
我被困在onItemClick函数中写什么。 FuelLog是具有多个属性的对象,包括:里程表读数,燃料类型,燃料成本等。
以下代码是用于保存FuelLogs的ListView和ArrayList的声明。
private Button button;
private ListView oldTweetsList;
private static final String FILENAME = "FuelTracker.sav";
private ArrayList<FuelLog> FuelLogs = new ArrayList<FuelLog>();
ArrayAdapter<FuelLog> adapter;
该信息是通过alertDialogBuilder输入的。
alertDialogBuilder
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// get user input and set it to result
//editTextMainScreen.setText(input.getText());
setResult(RESULT_OK);
String station = input.getText().toString();
String odometer = input1.getText().toString();
String fuelGrade = input2.getText().toString();
String fuelAmount = input3.getText().toString();
String fuelUnitCost = input4.getText().toString();
String fuelCost = input5.getText().toString();
String date = input6.getText().toString(); //Date
FuelLog log = new FuelLog(date, station, odometer, fuelGrade, fuelAmount, fuelUnitCost, fuelCost);
FuelLogs.add(log);
adapter.notifyDataSetChanged();
saveInFile();
finish();
}
})
这是类FuelLog。
public class FuelLog {
public String date;
public String station;
public String odometer;
public String fuelGrade;
public String fuelAmount;
public String fuelUnitCost;
public String fuelCost;
public FuelLog (String date, String station, String odometer, String fuelGrade, String fuelAmount, String fuelUnitCost, String fuelCost) {
this.date = date;
this.station = station;
this.odometer = odometer;
this.fuelGrade = fuelGrade;
this.fuelAmount = fuelAmount;
this.fuelUnitCost = fuelUnitCost;
this.fuelCost = fuelCost;
}
@Override
public String toString(){
//return date.toString() + " | " + message;
return "Date: " + date + "\nStation: " + station + "\nOdometer: " + odometer + "\nFuel Grade: " + fuelGrade + "\nFuel Amount: " + fuelAmount + "\nFuel Unit Cost: " + fuelUnitCost + "\nFuel Cost: " + fuelCost;
}
}
任何帮助将不胜感激!
实际上,您应该反过来做。 在列表视图中使用edittext,这样您的列表已经可以编辑。 但是,要限制它在单击按钮之前进行编辑,请禁用编辑框,然后单击onitemclick启用编辑框。
希望这可以帮助。
您必须获得要编辑的阵列列表数据的位置,而不是将其放入警报对话框或类似的新活动中。
int arrayListposition;
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
arrayListposition = position;
}
现在,在alertdialog中替换您的代码
FuelLog log = new FuelLog(date, station, odometer, fuelGrade, fuelAmount, fuelUnitCost, fuelCost);
FuelLogs.add(arrayListposition,log);
adapter.notifyDataSetChanged();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.