Fragment中ListView的Item的點選事件(包含Item內部控制元件的點選事件)
阿新 • • 發佈:2019-01-30
程式碼記錄在部落格上,分享給想我一樣的菜鳥們,自己忘了的時候也可以拿來看看,免得到處找程式碼:
Fragment中ListView的程式碼
package com.example.administrator.myapplication14.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import com.example.administrator.myapplication14.Adapter.MyCommendAdapter;
import com.example.administrator.myapplication14.R;
import com.example.administrator.myapplication14.be.MessageCommend;
import java.util.ArrayList;
import java.util.List;
/**
* @author BULUSILI
* @描述 訊息--評論
* @專案名稱 寵物圈
* @包名 com.example.administrator.myapplication14.be
* @未知 2016-8-9 09:20
*/
public class CommentFragment extends Fragment {
public ListView mListView;
View v;
MyCommendAdapter mAdapter;
List<MessageCommend> mList;
//new的例項時候一定要寫在onCreateView裡面,不然效果會不一樣哦
Intent mIntent;
public static CommentFragment newInstance() {
CommentFragment fragment = new CommentFragment();
return fragment;
}
public CommentFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
v = inflater.inflate(R.layout.fragment_comment, null);
initView();
initData();
initAdapter();
return v;
}
private void initView() {
mListView = (ListView) v.findViewById(R.id.message_commend_lv);
}
//新增bean類資料臨時的先新增,再連資料庫
private void initData() {
mList = new ArrayList<>();
for (int i = 0; i < 10; i++) {
MessageCommend message = new MessageCommend("http://img0.imgtn.bdimg.com/it/u=1717816186,2947076118&fm=21&gp=0.jpg",
"小強" + i, "你好", "23:23");
mList.add(message);
//item的點選事件,裡面可以設定跳轉並傳值
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(getActivity(), "第" + i + "行", Toast.LENGTH_LONG).show();
}
});
}
}
private void initAdapter() {
//傳兩個引數過去 1、上下文 2、集合
mAdapter = new MyCommendAdapter(getActivity(), mList);
mListView.setAdapter(mAdapter);
}
}
介面卡程式碼,我的Item內部有個頭像,點選頭像要跳轉到其他頁面。點選事件和跳轉傳值就寫在介面卡裡面:
package com.example.administrator.myapplication14.Adapter;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
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.example.administrator.myapplication14.Activity.Main2Activity;
import com.example.administrator.myapplication14.R;
import com.example.administrator.myapplication14.be.MessageCommend;
import java.util.List;
/**
* @author BULUSILI
* @描述 訊息評論介面卡
* @專案名稱
* @包名 com.example.administrator.myapplication14.Adapter
* @2016/8/9--14:52
*/
public class MyCommendAdapter extends BaseAdapter {
List<MessageCommend> mList;
Context mContext;
public MyCommendAdapter(Context context, List<MessageCommend> list) {
mList = list;
mContext = context;
}
@Override
public int getCount() {
return mList.size();
}
@Override
public Object getItem(int i) {
return mList.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
ViewHolder mHolder;
@Override
public View getView(final int position, View view, ViewGroup viewGroup) {
mHolder = new ViewHolder();
if (view == null) {
view = LayoutInflater.from(mContext).inflate(R.layout.commend_state, null);
mHolder.mImageView = (ImageView) view.findViewById(R.id.commend_item_tou_xiang);
mHolder.tv1 = (TextView) view.findViewById(R.id.commend_item_name);
mHolder.tv2 = (TextView) view.findViewById(R.id.commend_item_content);
mHolder.tv3 = (TextView) view.findViewById(R.id.commend_item_time);
view.setTag(mHolder);
} else {
mHolder = (ViewHolder) view.getTag();
}
//如果沒有這些內容,將會顯示佈局檔案中的內容
mHolder.mImageView.setImageResource(R.mipmap.ic_launcher);
mHolder.tv1.setText(mList.get(position).getName());
mHolder.tv2.setText(mList.get(position).getText());
mHolder.tv3.setText(mList.get(position).getTime());
//頭像的點選事件並傳值
mHolder.mImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//開始傳值
Intent intent=new Intent(mContext, Main2Activity.class);
Bundle bundle=new Bundle();
bundle.putSerializable("key",mList.get(position));
intent.putExtras(bundle);
//利用上下文開啟跳轉
mContext.startActivity(intent);
}
});
return view;
}
class ViewHolder {
ImageView mImageView;
TextView tv1;
TextView tv2;
TextView tv3;
}
}
佈局檔案如下只顯示下Itemde 佈局了:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp">
<!-- 訊息中心普通訊息的佈局 -->
<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2">
<ImageView
android:id="@+id/commend_item_tou_xiang"
android:layout_width="45dp"
android:layout_height="45dp"
android:src="@drawable/messagescenter_at"/>
</RelativeLayout>
<!-- 姓名、訊息內容 -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="7"
android:orientation="vertical">
<!-- 姓名 -->
<TextView
android:id="@+id/commend_item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="小凡"
android:textSize="18sp"/>
<!-- 訊息內容 -->
<TextView
android:id="@+id/commend_item_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="小凡你好小凡你好小凡你好小凡你好小凡你好小凡你好"
android:singleLine="true"
android:textSize="14sp"/>
</LinearLayout>
<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2">
<!-- 接收訊息時間 -->
<TextView
android:id="@+id/commend_item_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2016-12"/>
</RelativeLayout>
</LinearLayout>
在跳轉到的介面接收值:
TextView textView= (TextView) findViewById(R.id.textview333);
Intent intent=getIntent();
Bundle bundle=intent.getExtras();
if (bundle!=null){
mMessageCommend =
(MessageCommend) bundle.getSerializable("key");
}
textView.setText(mMessageCommend.getName());
效果圖:
點選頭像跳到相關頁面