我是Android新手。我正在使用" com.devsmart.android.ui.HorizontalListView"显示我的物品(扑克牌)。在列表中我第一次尝试获得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上完成,但我不知道如何。
答案 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()