list中按鈕點選事件在activity中處理
阿新 • • 發佈:2019-02-13
如果listview中有按鈕,點選事件可以寫到adapter中,但是你想寫到avtivity中,發現以前沒遇到過。這裡就給你們一個方法,利用介面回撥可以實現listview中按鈕點選事件在activity中處理。其實和recycleview差不多,recycleview官方沒有給出點選事件,需要自己寫。也可以利用介面回撥來處理點選事件。
1.首先看下adapter
package example.caobin.com.mylistcallback;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
/**
* Created by caobin on 2017/1/3.
*/
public class ListAdapter extends BaseAdapter {
private LayoutInflater mInflater;
//例項化介面,
private CallBack mCallBack;
public ListAdapter (Context context,CallBack callBack) {
mInflater = LayoutInflater.from(context);
this.mCallBack=callBack;
}
/**
*自定義回撥介面
* @return
*/
public interface CallBack{
void onClick(View v);
}
@Override
public int getCount() {
return 20;
}
@Override
public Object getItem(int i) {
return i;
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View v = mInflater.inflate(R.layout.item_list_btn, null);
Button button = (Button) v.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//按鈕的點選事件,呼叫介面的方法
mCallBack.onClick(view);
}
});
return v;
}
}
2.listview的item佈局
<?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="match_parent"
android:descendantFocusability="blocksDescendants"
android:minHeight="40dp"
android:orientation="vertical">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_gravity="center"
android:layout_margin="5dp"
android:gravity="center"
android:minHeight="40dp"
android:text="點我" />
</LinearLayout>
3.下來是MainActivity
package example.caobin.com.mylistcallback;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
/**
* 要實現CallBack介面,
*/
public class MainActivity extends AppCompatActivity implements ListAdapter.CallBack{
private ListView mListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = (ListView) findViewById(R.id.list_view);
mListView.setAdapter(new ListAdapter(this,this));
}
@Override
public void onClick(View v) {
System.err.println("123");
}
}
4.mainactivity佈局就一個listview很簡單。對回撥不太瞭解的可以看下這個部落格xiaanming的部落格