如何从ArrayList <hashmap <string,string =“”>&gt;中删除项目在android中一个接一个

时间:2015-12-08 06:53:07

标签: android listview adapter

我是Android新手。我正在使用&#34; com.devsmart.android.ui.Horizo​​ntalListView&#34;显示我的物品(扑克牌)。在列表中我第一次尝试获得8张牌。我想要的是如果我再次调用该方法必须有7张卡等等,这意味着每次必须从列表中删除1张卡,直到列表变空。但我无法从列表中删除项目。我在这里发布我的代码。将不胜感激。

MainActivity.java

ArrayList<HashMap<String, String>> aList9;
Button btn_aditional_card;
HorizontalListView list1;

int[] cards3 = new int[]{
        R.drawable.card1,
        R.drawable.card1,
        R.drawable.card1,
        R.drawable.card1,
        R.drawable.card1,
        R.drawable.card1,
        R.drawable.card1,
        R.drawable.card1,
        R.drawable.card1,
        R.drawable.card1,
        R.drawable.card1,
        R.drawable.card1,
        R.drawable.card1,
        R.drawable.card1

};


public class MainActivity extends AppCompatActivity{

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

    btn_aditional_card = (Button) findViewById(R.id.btn_aditional_card);
    list1 = (HorizontalListView) findViewById(R.id.listview1);

btn_aditional_card.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          add8();
        }
    });
  }

 public void add8() {

   final android.view.animation.Animation animScale = AnimationUtils.loadAnimation(this, R.anim.slide_right_in);
    list1.startAnimation(animScale);

    aList9 = new ArrayList<HashMap<String, String>>();

    for (int i = 0; i < 8; i++) {
        HashMap<String, String> hm = new HashMap<String, String>();
        hm.put("card", Integer.toString(cards3[i]));
        aList9.add(hm);
    }

    String[] from = {"card"};
    int[] to = {R.id.ImageView};

    final SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), aList9, R.layout.activity_animation__adapter, from, to);
    list1.setAdapter(adapter);
    adapter.notifyDataSetChanged();

    list1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
               aList9.remove(aList9.size() - 1);
               adapter.notifyDataSetChanged();
           }
        });
     }

此处从列表中删除项目必须在list1.setOnItemClickListener上完成,但我不知道如何。

4 个答案:

答案 0 :(得分:0)

您可以从列表中删除最后一项,例如;

import UIKit

class Area {

var AreaName: String

init? (AreaName: String) {
self.AreaName = AreaName

    if AreaName.isEmpty {
    return nil
    }

}
}

另一个解决方案, 取整数数组的长度,并根据此长度遍历add8方法中的循环,并在方法结束时将长度减1,如;

if (aList9.size() > 0) {
   aList9.remove(aList9.size() - 1);
}

在你的add8方法中;

int length = cards3.length;

for循环后减去长度,如;

for (int i = 0; i < length; i++) {
    HashMap<String, String> hm = new HashMap<String, String>();
    hm.put("card", Integer.toString(cards3[i]));
    aList9.add(hm);
}

希望你能得到解决方案。

答案 1 :(得分:0)

在list1.setOnItemClickListener中,执行以下操作:

if (aList9.size() > 0) {
   aList9.remove(aList9.size() - 1);
   adapter.notifyDataSetChanged();
}

从数据列表中删除项目时,您必须通知您的适配器更新视图。

答案 2 :(得分:0)

在你的主要活动中,代码应该是这样的。我使用的是arraylist,你可以使用hashmap。这段代码只是为了向你展示你需要做什么。在你的项目中遵循这个代码,你将得到解决方案,这是在我的网站测试和工作正常,你需要根据你的代码更改。在按钮单击我只是从arraylist删除最后一项,并通知数据集changed.hope它将有助于你。

when max_length > byte_size(acc)

答案 3 :(得分:0)

阅读评论

class Class1 {
}

class Class2 {
    var myOp: Class1?
}

var c = Class2()
c.myOp = c.myOp.dynamicType()