2016-01-31 38 views
1

我正在制作一个FuelLog应用程序,用于记录加油站的燃油加注情况。我有onItemClick修改每个项目的ArrayList中的对象属性的麻烦。换句话说,我想要做的就是点击列表中的某个燃油日志并对其进行编辑。在Android中编辑Listview

@Override 
public void onItemClick(AdapterView<?> arg0, View view, int position, long id) { 


    } 

我被困在onItemClick函数写什么。 FuelLog是一个具有多个属性的对象,包括:里程表读数,燃料类型,燃料成本等。

以下代码是ListView和ArrayList的声明,用于保存FuelLogs。

private Button button; 
private ListView oldTweetsList; 
private static final String FILENAME = "FuelTracker.sav"; 
private ArrayList<FuelLog> FuelLogs = new ArrayList<FuelLog>(); 
ArrayAdapter<FuelLog> adapter; 

该信息通过alertDialogBu​​ilder输入。

  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; 
} 

} 

任何帮助将不胜感激!

+0

我还是不明白你的要求。 – TheSunny

+0

我正在构建一个FuelLogger应用程序,用于在加油站保存燃油加注日志。我试图做的是能够点击列表中的其中一个燃油日志并对其进行编辑。 – IC2D

+0

你想让别人为你写代码吗? – TheSunny

回答

2

其实你应该这样做。在你的列表视图中使用edittext,这样你的列表就已经可编辑了。但是,要在单击按钮之前限制它的编辑,请禁用编辑框并单击启用编辑框。

希望这会有所帮助。

0

你必须得到你想要编辑的数据列表数据的位置,而不是放在你的alertdialog或新的活动中。

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();