Java ArrayList、ListView和button
我花了几天时间研究,但还没有找到我想要的答案,所以也许你们可以帮我一点忙 我的应用程序是一个交易卡组生成器。我有两个ArrayList,database和currentDeck,它们都在正常工作。我试图完成的任务是将数据库的选定项作为新项添加到currentDeck中 以下是主要方法:Java ArrayList、ListView和button,java,android,listview,arraylist,android-button,Java,Android,Listview,Arraylist,Android Button,我花了几天时间研究,但还没有找到我想要的答案,所以也许你们可以帮我一点忙 我的应用程序是一个交易卡组生成器。我有两个ArrayList,database和currentDeck,它们都在正常工作。我试图完成的任务是将数据库的选定项作为新项添加到currentDeck中 以下是主要方法: public class DeckBuilderActivity extends ActionBarActivity { ArrayList<Card> database = new ArrayLi
public class DeckBuilderActivity extends ActionBarActivity {
ArrayList<Card> database = new ArrayList<Card>(); //create new arraylist of datatype card
ArrayList<Card> currentDeck = new ArrayList<Card>(); //create arraylist for currently loaded deck
@Override
protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_deck_builder);
//begin method to create main database.
cardfightMainDatabase(database);
//format display in listview
DatabaseAdapter adapter = new DatabaseAdapter(this, database);
ListView lv = (ListView) findViewById(R.id.card_database_listview);
lv.setAdapter(adapter);
//format display in deck view
DeckAdapter adapter2 = new DeckAdapter(this, currentDeck);
GridView gv = (GridView) findViewById(R.id.deckGridView);
gv.setAdapter(adapter2);
//set up click event
AdapterView.OnItemClickListener mMessageClickedHandler = new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id) {
//link image view
ImageView iv = (ImageView) findViewById(R.id.cardDisplay);
//link scrollable textview
TextView tv = (TextView) findViewById(R.id.cardDataDisplay);
// Do something in response to the click
//set image id
int imageId = database.get(position).getCardImgID();
//display image to imageview
iv.setImageResource(imageId);
//display text to textview
//Print card name, expansion, card number, skill and flavor text to scrollable textview
tv.setText(database.get(position).getCardName() + "\nExpansion Set: " + database.get(position).getExpansion() +
"\nCard #: " + database.get(position).getCardNum() + "\nSkill:\n" + database.get(position).getUnitSkill()
+ "\nFlavor Text:\n" + "\"" + database.get(position).getCardLore()+ "\"");
}
};
lv.setOnItemClickListener(mMessageClickedHandler);
} //end OnCreate Method
并将其放入数据库适配器的getView()方法中,但无论我在其中添加了什么,都无法使其工作。有什么建议吗?我想出来了。通过在on item click方法中放置onClick方法,我得到了我想要的结果。我真的很难过,事情就这么简单。我花了四天时间想弄明白这件事
//set up click event for database
AdapterView.OnItemClickListener mMessageClickedHandler = new AdapterView.OnItemClickListener() {
public void onItemClick(final AdapterView parent, View v, final int position, long id) {
//link image view
ImageView iv = (ImageView) findViewById(R.id.cardDisplay);
//link scrollable textview
TextView tv = (TextView) findViewById(R.id.cardDataDisplay);
// Do something in response to the click
//set image id
int imageId = database.get(position).getCardImgID();
//display image to imageview
iv.setImageResource(imageId);
//Configure button click event
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//add card from database to current deck
currentDeck.add(database.get(position));
adapter2.notifyDataSetChanged();
}
});
我想出来了。通过在on item click方法中放置onClick方法,我得到了我想要的结果。我真的很难过,事情就这么简单。我花了四天时间想弄明白这件事
//set up click event for database
AdapterView.OnItemClickListener mMessageClickedHandler = new AdapterView.OnItemClickListener() {
public void onItemClick(final AdapterView parent, View v, final int position, long id) {
//link image view
ImageView iv = (ImageView) findViewById(R.id.cardDisplay);
//link scrollable textview
TextView tv = (TextView) findViewById(R.id.cardDataDisplay);
// Do something in response to the click
//set image id
int imageId = database.get(position).getCardImgID();
//display image to imageview
iv.setImageResource(imageId);
//Configure button click event
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//add card from database to current deck
currentDeck.add(database.get(position));
adapter2.notifyDataSetChanged();
}
});
不能让它工作怎么办?你试了什么?你想发生什么?实际发生了什么?我试图获取项目的视图位置,并通过将两个ArrayList传递给按钮,执行一个操作,将“数据库”的选定项目添加到“当前组”。我一直在搜索示例,每个答案都指向使用onClickListener,但是如何为获取ArrayList的按钮创建onClickListener呢?我是否必须创建自定义onClickListener?是否可以将ListView视图作为参数传递给按钮,或者我是否应该为按钮创建一个与getView方法类似的完全onClickListener?与其在注释中描述您所做的事情,不如编辑您的问题以显示您所做的事情(即代码).无法让它工作怎么办?你试了什么?你想发生什么?实际发生了什么?我试图获取项目的视图位置,并通过将两个ArrayList传递给按钮,执行一个操作,将“数据库”的选定项目添加到“当前组”。我一直在搜索示例,每个答案都指向使用onClickListener,但是如何为获取ArrayList的按钮创建onClickListener呢?我是否必须创建自定义onClickListener?是否可以将ListView视图作为参数传递给按钮,或者我是否应该为按钮创建一个与getView方法类似的完全onClickListener?与其在注释中描述您所做的事情,不如编辑您的问题以显示您所做的事情(即代码).无法让它工作怎么办?你试了什么?你想发生什么?实际发生了什么?我试图获取项目的视图位置,并通过将两个ArrayList传递给按钮,执行一个操作,将“数据库”的选定项目添加到“当前组”。我一直在搜索示例,每个答案都指向使用onClickListener,但是如何为获取ArrayList的按钮创建onClickListener呢?我是否必须创建自定义onClickListener?是否可以将ListView视图作为参数传递给按钮,或者我是否应该为按钮创建一个与getView方法类似的完全onClickListener?与其在注释中描述您所做的事情,不如编辑您的问题以显示您所做的事情(即代码)。
addButton = (Button) findViewById(R.id.addToDeckButton);
addButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v, int position) {
currentDeck.add(database.get(position));
adapter.notifyDataSetChanged();
}
//set up click event for database
AdapterView.OnItemClickListener mMessageClickedHandler = new AdapterView.OnItemClickListener() {
public void onItemClick(final AdapterView parent, View v, final int position, long id) {
//link image view
ImageView iv = (ImageView) findViewById(R.id.cardDisplay);
//link scrollable textview
TextView tv = (TextView) findViewById(R.id.cardDataDisplay);
// Do something in response to the click
//set image id
int imageId = database.get(position).getCardImgID();
//display image to imageview
iv.setImageResource(imageId);
//Configure button click event
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//add card from database to current deck
currentDeck.add(database.get(position));
adapter2.notifyDataSetChanged();
}
});