我是初学Android开发者,这是我的第一个项目。我在EntryTO.java上有一个列表视图,用于显示ViewData.java上选定列表视图的数据顺序。我用按钮来显示ViewData,java。这是我从ViewData.java
中选择所选项目时的代码ListView lv = (ListView) findViewById(android.R.id.list);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(final AdapterView<?> adapter, View v, int pos, final long id) {
final Dialog dialog = new Dialog(ViewData.this);
dialog.setContentView(R.layout.dialog_view);
dialog.setTitle("Masukkan Qty");
dialog.show();
final product b = (product) getListAdapter().getItem(pos);
edtqty = (EditText) dialog.findViewById(R.id.edtqty);
buttonok = (Button) dialog.findViewById(R.id.buttonok);
buttonok.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
switchToEdit(b.getId());
dialog.dismiss();
};
});
}
});
}
public void switchToEdit(long id){
product b = dataSource.getproduct(id);
Intent i = new Intent(this, EntryTO.class);
Bundle bun = new Bundle();
bun.putLong("id", b.getId());
bun.putString("brand", b.getbrand());
bun.putString("qty",edtqty.getText().toString());
i.putExtras(bun);
finale();
startActivity(i);
}
这是我尝试在EntryTO.java上显示时的代码
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.entry_to);
dataSource = new DBDataSource(this);
dataSource.open();
mylist = new ArrayList<HashMap<String, String>>();
Bundle bun = null;
try{
bun = EntryTO.this.getIntent().getExtras();
id = bun.getLong("id");
brand = bun.getString("brand");
qty = bun.getString("qty");
map1 = new HashMap<String, String>();
if(map1.isEmpty()){
map1.put("one", brand);
map1.put("two", qty);
mylist.add(map1);
}else{
int j=mylist.lastIndexOf(map1);
map1.put("one", brand);
map1.put("two", qty);
mylist.add(j,map1);
}
try {
adapter = new SimpleAdapter(EntryTO.this, mylist, R.layout.item_to,
new String[] {"one", "two" },
new int[] {R.id.edtbrandto, R.id.edtqtyto });
setListAdapter(adapter);
}catch (Exception e) {Toast.makeText(EntryTO.this, "Ada Error Exception", Toast.LENGTH_LONG).show();}
}catch(NullPointerException e){}}
我之前尝试使用循环。当我插入第一个订单时,没有问题。但是当我尝试插入第二个订单时,第二个订单替换了第一个订单。它导致当我点击显示ViewData.java的按钮时,arraylist的索引再次变为0。现在我尝试使用if函数检查arraylist(mylist)的索引。如果mylist.isEmpty插入数据顺序,但是当mylist不为空时获取最新数据顺序的索引并在此之后插入新数据。问题是,第二个数据仍然取代了第一个数据。我该如何修理它们?
答案 0 :(得分:0)
选择您选择的方法意味着您需要在课程中将您传递给ArrayAdapter
实现的内容存储为第三个参数(即{{1}初始元素)。
这样,如果您需要添加新元素,则只需将其添加到ArrayList
并调用ArrayList
方法。
例如:
notifyDataSetChanged()
如果您想添加项目,请执行以下操作:
ArrayList<String> my_items = new ArrayList<String>();
my_items.add("one");
my_items.add("two");
adapter = new SimpleAdapter(EntryTO.this, mylist, R.layout.item_to, my_items);
希望这有帮助。
答案 1 :(得分:0)
您正在检查始终为真的if(map1.isEmpty())
。
使用
if(mylist.size() == 0)
而不是
if(map1.isEmpty())
并且,为了找出要插入的下一个元素,获取将项目添加到最后位置的大小。
int j=mylist.size();
答案 2 :(得分:0)
我发现@ ling.s的答案是正确的。但它需要一些完成感动。我试着制作Globals.java。这是代码
public class Globals {
public static ArrayList<HashMap<String, String>> mylist;
}
在EntryTO.java上我们只是从Globals.java中调用mylistif (Globals.mylist == null)
Globals.mylist = new ArrayList<HashMap<String, String>>();
Bundle bun = null;
try{
bun = EntryTO.this.getIntent().getExtras();
id = bun.getLong("id");
brand = bun.getString("brand");
qty = bun.getString("qty");
map1 = new HashMap<String, String>();
if (Globals.mylist.size() == 0) {
map1.put("one", brand);
map1.put("two", qty);
Globals.mylist.add(map1);
}else {
int j=Globals.mylist.size();
map1.put("one", brand);
map1.put("two", qty);
Globals.mylist.add(j,map1);
}
try {
adapter = new SimpleAdapter(EntryTO.this, Globals.mylist, R.layout.item_to,
new String[] {"one", "two" },
new int[] {R.id.edtbrandto, R.id.edtqtyto });
setListAdapter(adapter);
}catch (Exception e) {Toast.makeText(EntryTO.this, "Ada Error Exception", Toast.LENGTH_LONG).show();}
}catch(NullPointerException e){}
它的工作。