Android ListView setOnItemClickListener不';行不通
我没有足够的知识来解决我的问题。 在我提问之前,我一直在寻找答案,并尝试了各种选择 我有ListView和setOnItemClickListener: 新版本,仅ListItem和setOnItemClickListener 主要活动Android ListView setOnItemClickListener不';行不通,android,listview,editview,Android,Listview,Editview,我没有足够的知识来解决我的问题。 在我提问之前,我一直在寻找答案,并尝试了各种选择 我有ListView和setOnItemClickListener: 新版本,仅ListItem和setOnItemClickListener 主要活动 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/listView">
</ListView>
</RelativeLayout>
项目
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="blocksDescendants">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Name"
android:ems="10"
android:id="@+id/editText"
android:focusableInTouchMode="false"
android:clickable="false"
android:focusable="false"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Name"
android:ems="10"
android:id="@+id/editText1"
android:focusableInTouchMode="false"
android:clickable="false"
android:focusable="false"/>
<TextView
android:text="TextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView"
android:focusableInTouchMode="false"
android:clickable="false"
android:focusable="false"/>
</LinearLayout>
main活动、NoteItems、NoteItemsAdapter
public class MainActivity extends Activity {
ListView listView;
List<NotesItems> list;
private NoteItemsAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list= new ArrayList<NotesItems>();
list.add(new NotesItems(0, "",",",",", ""));
listView= (ListView) findViewById(R.id.listView);
adapter = new NoteItemsAdapter(this, list);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> adapter, View itemClicked, int position, long id) {
Toast.makeText(itemClicked.getContext(), "Work", Toast.LENGTH_LONG).show();
}
});
}
}
public class NotesItems {
private long id;
private String title;
private String description;
private String fileName;
private String packageName;
public NotesItems(int id, String title, String description, String fileName, String packageName){
this.description = description;
this.title = title;
this.id = id;
this.fileName=fileName;
this.packageName = packageName;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getPackageName(){return packageName;}
public String getNoteTitle() {
return title;
}
public String getFileName() {return fileName;}
public void setFileName(String fileName) {this.fileName = fileName;}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
public class NoteItemsAdapter extends BaseAdapter {
Context context;
private LayoutInflater layoutInflater;
private List<NotesItems> items;
public NoteItemsAdapter(Context view, List<NotesItems> list){
this.context = view;
this.items = list;
this.layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int i) {
return items.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View convertView, ViewGroup viewGroup) {
View view = convertView;
if(view == null){
view = layoutInflater.inflate(R.layout.item, viewGroup, false);
}
final NotesItems notesItems = getNoteItem(i);
EditText editText1= (EditText)view.findViewById(R.id.editText);
editText1.setText(notesItems.getDescription());
EditText editText2= (EditText)view.findViewById(R.id.editText1);
editText2.setText(notesItems.getNoteTitle());
return view;
}
private NotesItems getNoteItem(int position){
return (NotesItems) getItem(position);
}
}
公共类MainActivity扩展活动{
列表视图列表视图;
名单;
私有NoteItemsAdapter适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
列表=新的ArrayList();
添加(新的NotesItems(0、“、”、“、”、“、”、“、”);
listView=(listView)findViewById(R.id.listView);
适配器=新的NoteItemsAdapter(此,列表);
setAdapter(适配器);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView适配器、View itemClicked、int位置、长id){
Toast.makeText(itemClicked.getContext(),“Work”,Toast.LENGTH_LONG.show();
}
});
}
}
公共类记事本{
私人长id;
私有字符串标题;
私有字符串描述;
私有字符串文件名;
私有字符串包名;
公共NotesItems(int-id、字符串标题、字符串描述、字符串文件名、字符串packageName){
this.description=描述;
this.title=标题;
this.id=id;
this.fileName=文件名;
this.packageName=packageName;
}
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
公共字符串getPackageName(){return packageName;}
公共字符串getNoteTitle(){
返回标题;
}
公共字符串getFileName(){return fileName;}
public void setFileName(字符串文件名){this.fileName=fileName;}
公共无效集合标题(字符串标题){
this.title=标题;
}
公共字符串getDescription(){
返回说明;
}
公共void集合描述(字符串描述){
this.description=描述;
}
}
公共类NoteItemsAdapter扩展了BaseAdapter{
语境;
私人停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场;
私人清单项目;
public NoteItemsAdapter(上下文视图,列表){
this.context=视图;
此项=列表;
this.layoutInflater=(layoutInflater)context.getSystemService(context.LAYOUT\u INFLATER\u SERVICE);
}
@凌驾
public int getCount(){
返回items.size();
}
@凌驾
公共对象getItem(int i){
返回项目。获取(i);
}
@凌驾
公共长getItemId(int i){
返回i;
}
@凌驾
公共视图getView(int i、视图转换视图、视图组视图组){
视图=转换视图;
如果(视图==null){
视图=布局更平坦。充气(R.layout.item,viewGroup,false);
}
最终NotesItems NotesItems=getNoteItem(i);
EditText editText1=(EditText)view.findViewById(R.id.EditText);
editText1.setText(notesItems.getDescription());
EditText editText2=(EditText)view.findViewById(R.id.editText1);
editText2.setText(notesItems.getNoteTitle());
返回视图;
}
私有NotesItems getNoteItem(int位置){
return(NotesItems)getItem(position);
}
}
我为测试添加了TextView:
如果单击EditText-什么也不发生,
如果单击TextView,则会显示toast
我需要使EditText看起来像TextView-当您单击列表上的任何位置时,必须显示toast项目。尝试将其添加到您的TextView和所有其他可单击元素中,以使适配器钩住对整个项目的所有单击
android:focusableInTouchMode="false"
android:clickable="false"
android:focusable="false"
您正在listview中的子项editText视图上执行onClick。当您在列表视图的子项上使用onClick时,onItemClick将不起作用,因为该项的焦点完全集中在您案例中编辑文本的onClick项上 请参考以下链接:
在我看来,这是因为您显式地将onClick侦听器设置为子视图。 让onClick监听器在列表视图项内子视图有什么意义?
它会造成一种模棱两可的状态 注意:是否在AndroidManifest中添加了preview.class。?我认为这是一个清单问题。为什么不调试或记录以检查是否调用了此块?只有在单击TextView时,我才运行调试和setOnItemClickListener调用。我加了一句,我试过了,不行。我用新的ListView编辑了第一篇文章,我在editText上单击后删除了它。但它仍然不起作用。我将所有com.onegravity.rteditor.RTEditText更改为EditView,以检查“com.onegravity.rteditor.RTEditText”中是否有onClickListener,但没有更改。