java - 自定义适配器中的意图
问题描述
嗨,我需要在我的 onClick 中添加 Intent,在要与我的 Arraylist 连接的适配器中,并为 listview 中的不同项目传递不同的链接。我的代码在下面,所以我需要进行哪些更改?如何将 Intent 与我的适配器连接以及我需要使用哪些命令
package com.example.android.extremebiceps;
import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
public class Workout extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_workout);
//kreirenje arraja
final ArrayList<Word> workouts = new ArrayList<Word>();
workouts.add(new Word("workout1",R.layout.activity_main));
workouts.add(new Word("workout2",R.layout.activity_main));
workouts.add(new Word("workout3",R.layout.activity_main));
workouts.add(new Word("workout4",R.layout.activity_main));
workouts.add(new Word("workout5",R.layout.activity_main));
// kreiranje variable za pracenje trenutne pozicije
WordAdapter adapter=new WordAdapter(this,workouts);
ListView listView = (ListView) findViewById(R.id.list);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long l) {
Word word = workouts.get(position);
}
});
}
}
我的适配器
package com.example.android.extremebiceps;
import android.app.Activity;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.TextView;
import java.util.ArrayList;
public class WordAdapter extends ArrayAdapter<Word> {
public WordAdapter(Activity context, ArrayList<Word> Workouts) {
// Here, we initialize the ArrayAdapter's internal storage for the context and the list.
// the second argument is used when the ArrayAdapter is populating a single TextView.
// Because this is a custom adapter for two TextViews and an ImageView, the adapter is not
// going to use this second argument, so it can be any value. Here, we used 0.
super(context, 0, Workouts);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
// Check if the existing view is being reused, otherwise inflate the view
View listItemView = convertView;
if (listItemView == null) {
listItemView = LayoutInflater.from(getContext()).inflate(
R.layout.list_item, parent, false);
}
Word currentWord = getItem(position);
//nadzi button
Button buttonView = (Button) listItemView.findViewById(R.id.Button1);
//uzmi tekst iz buttona
buttonView.setText(currentWord.getDefaultButton());
return listItemView;
}
和我的 Word 课
package com.example.android.extremebiceps;
public class Word {
//trazenje buttona
private String mDefaultButton;
//Trazenje intenta
private int mLink;
public Word(String DefaultButton,int Link){
mDefaultButton=DefaultButton;
mLink=Link;
}
//uzimanje buttona
public String getDefaultButton(){
return mDefaultButton;
}
//uzimanje intenta
public int getLink(){
return mLink;
}
}
当我尝试在我的 onItemClickListener 中添加 Toast 时它不起作用。为什么
解决方案
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long l) {
Word word = workouts.get(position);
Intent in = new Intent(Workout.this, NextActivity.class);
in.putExtra("Word", wokouts.get(position).yourMethod());
startActivity(in);
}
});
推荐阅读
- tensorflow - Keras / Tensorflow:优化学习以获得更好的敏感性和特异性?
- django-rest-framework - Wagtail 和 Django Rest 框架 drf-yasg?
- amazon-web-services - 设置一个 aws 帐户拥有的 s3 对另一个 aws 帐户拥有的 firehose 流的写入访问权限
- c - 何时为 OpenMP 使用私有和共享变量
- javascript - 在获得角度 5 的结果后,如何确保 typescript 接口属性为大写?
- tensorflow - 有什么方法可以创建点对点 TensorFlow 环境?
- post - 没有 FormUrlEncodedContent 的 HttpClient Post
- java - 如何在java线程中实现检查连接是否存在?
- java - 使用 Firebase for android 发送电子邮件验证时未选中的分配警告
- java - Spring 数据存储库不检查标记为在主实体下级联的类上的 isNew(entity)