如何为ListView实现onItemClickListerner?
How to Implement onItemClickListerner for ListView?
我正在尝试为 ListView
实现 onItemClickListerner
(请参阅下面的代码);
当 运行 它时,我得到这个错误:
Error:(32, 37) error: incompatible types: List cannot be converted to OnItemClickListener
List.java
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.view.ViewGroup;
import java.util.ArrayList;
public class List extends Fragment {
ListView list;
String[] Winners = {
"A",
"B",
"C",
"D",
"E"
};
OnSiteSelectedListener SiteListener;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_list, container, false);
list = (ListView) v.findViewById(R.id.fragment1);
list.setAdapter(new ArrayAdapter < String > (getActivity().getApplicationContext(), android.R.layout.simple_list_item_1, Winners));
list.setOnItemClickListener(this);
return v;
}
public void onItemClick(AdapterView adapterView, View view, int position, long l) {
SiteListener.onSiteSelected(position);
}
public interface OnSiteSelectedListener {
public void onSiteSelected(int i);
}
public void setRefrence(OnSiteSelectedListener siteListener) {
this.SiteListener = siteListener;
}
}
您需要像这样
为您的 ListView
实施 onItemClickListerner
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// HANDLE WHATEVER YOU WANNA DO WITH LISTVIEW CLICKS HERE
SiteListener.onSiteSelected(position);
}
List
class需要执行OnItemClickListener
。你已经实现了 onItemClick()
方法,所以你只需要将接口添加到 class 声明:
public class List extends Fragment implements AdapterView.OnItemClickListener {
您可以在 class 中调用 setOnItemClickListener 而无需实现。所以您可以通过以下两种方式修复它。
public class List extends Fragment implements AdapterView.OnItemClickListener
或
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
String item = ((TextView)view).getText().toString();
Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show();
}
});
我正在尝试为 ListView
实现 onItemClickListerner
(请参阅下面的代码);
当 运行 它时,我得到这个错误:
Error:(32, 37) error: incompatible types: List cannot be converted to OnItemClickListener
List.java
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.view.ViewGroup;
import java.util.ArrayList;
public class List extends Fragment {
ListView list;
String[] Winners = {
"A",
"B",
"C",
"D",
"E"
};
OnSiteSelectedListener SiteListener;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_list, container, false);
list = (ListView) v.findViewById(R.id.fragment1);
list.setAdapter(new ArrayAdapter < String > (getActivity().getApplicationContext(), android.R.layout.simple_list_item_1, Winners));
list.setOnItemClickListener(this);
return v;
}
public void onItemClick(AdapterView adapterView, View view, int position, long l) {
SiteListener.onSiteSelected(position);
}
public interface OnSiteSelectedListener {
public void onSiteSelected(int i);
}
public void setRefrence(OnSiteSelectedListener siteListener) {
this.SiteListener = siteListener;
}
}
您需要像这样
为您的ListView
实施 onItemClickListerner
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// HANDLE WHATEVER YOU WANNA DO WITH LISTVIEW CLICKS HERE
SiteListener.onSiteSelected(position);
}
List
class需要执行OnItemClickListener
。你已经实现了 onItemClick()
方法,所以你只需要将接口添加到 class 声明:
public class List extends Fragment implements AdapterView.OnItemClickListener {
您可以在 class 中调用 setOnItemClickListener 而无需实现。所以您可以通过以下两种方式修复它。
public class List extends Fragment implements AdapterView.OnItemClickListener
或
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
String item = ((TextView)view).getText().toString();
Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show();
}
});