之前我们学习到了getView方法和点击事件,那么接下来,会继续学习到,我们在点击一个item行时,启动另外一个Activity,并把该item行的文本(当然也包括图片),传递到那个Activity中去。
类似以下效果:
在自定义Adapter中,有一个方法,叫
public Object getItem(int position) {
return list.get(position);
}
它的作用是取得当前position的位置,我们可以根据这个,利用自定义Adapter中的Map集合,来取得文本或者其他对应的详细内容。
MyAdapterlistView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent();
intent.setClass(MyAdapterActivity.this, Main2Activity.class);
HashMap<String, Object> itemMap = (HashMap<String, Object>) parent.getItemAtPosition(position);
String title = (String) itemMap.get("tvText");
intent.putExtra("key", title);
startActivity(intent);
}
});
为什么用的是HashMap呢?之前我们在做SimpleAdapter的时候:
Map集合里装的是Hash表,我们就利用Hash表进行索引,找出key值为"tvText"的参数。然后通过intent.putExtra 将该string传递到另外一个Activity中。
在被启动的Activity中取得传递值:
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
TextView tvtv = (TextView) findViewById(R.id.tvtvtvt);
Intent intent = getIntent();
String tilte = intent.getStringExtra("key");
tvtv.setText(tilte);
}
这样,就可以获取到传递过来的值了。
1.创建接口
2.自定义继承BaseAdapter类里声明接口变量,并写set方法
3.getView方法中的点击事件
4.MainActivity中实现接口 -implements接口
5.传递context
或者在自定义adapter中直接使用context来实现点击:
package com.yuanwang.adapter; import android.content.Context; import android.content.Intent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.yuanwang.test33.R; import java.util.List; import java.util.Map; /** * Created by qin on 2015/12/14. */ public class myAdapter extends BaseAdapter { private List<Map<String, Object>> list; private Context context; private LayoutInflater inflater; public myAdapter(Context context, List<Map<String, Object>> list) { super(); this.list = list; this.context = context; inflater = LayoutInflater.from(context); } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHodler hodler; if (convertView == null) { convertView = inflater.inflate(R.layout.listview_item, null, false); hodler=new ViewHodler(); hodler.imageViewHeader = (ImageView) convertView.findViewById(R.id.imageViewHeader); hodler.textViewContent = (TextView) convertView.findViewById(R.id.textViewContent); hodler.textViewTime = (TextView) convertView.findViewById(R.id.textViewTime); convertView.setTag(hodler); } else { hodler = (ViewHodler) convertView.getTag(); } Map map = list.get(position); hodler.imageViewHeader.setImageResource((Integer) map.get("imageViewHeader")); hodler.textViewContent.setText((String) map.get("textViewContent")); hodler.textViewTime.setText((String) map.get("textViewTime")); hodler.imageViewHeader.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(context,B.class); context.startActivity(intent); } }); return convertView; } static class ViewHodler { ImageView imageViewHeader; TextView textViewContent; TextView textViewTime; } }