Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android setOnItemClickListener在片段活动中不工作_Android_Listview - Fatal编程技术网

Android setOnItemClickListener在片段活动中不工作

Android setOnItemClickListener在片段活动中不工作,android,listview,Android,Listview,单击ListView项时,我正在尝试显示Toast。我在这个网站上读了一些以前的帖子,试图解决这个问题。但这对我不起作用。我怎样才能解决这个问题 以下是片段活动的代码: import android.database.Cursor; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.widget.SimpleCursorAdapter; import androi

单击ListView项时,我正在尝试显示Toast。我在这个网站上读了一些以前的帖子,试图解决这个问题。但这对我不起作用。我怎样才能解决这个问题

以下是片段活动的代码:

import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.widget.SimpleCursorAdapter;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.FilterQueryProvider;
import android.widget.ListView;
import android.widget.Toast;

public class SinFragment extends Fragment {

    private static SimpleCursorAdapter dataAdapter;
    private static String[] columns;
    private static int[] to;
    private static ListView listView;
    private static Cursor cursor;
    private static TestAdapter dbHelper;

    public SinFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //Open Exiting Database
        dbHelper = new TestAdapter(getContext());
        dbHelper.createDatabase();
        dbHelper.open();
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_sin, container, false);
        //Get data from Database to ListView
        setListView(view);
        return view;
    }

    public void setListView(View view){

        cursor = dbHelper.getSiDic();

        columns = new String[] {
                "word",
                "definition",
        };

        to = new int[] {
                R.id.word,
                R.id.definition,
        };

        dataAdapter = new SimpleCursorAdapter(
                getContext(), R.layout.item_sin,
                cursor,
                columns,
                to,
                0);

        // Assign adapter to ListView
        listView = (ListView)view.findViewById(R.id.listview);
        listView.setAdapter(dataAdapter);

        final EditText search = (EditText)view.findViewById(R.id.search);
        //Clear text of EditText when click the clear button at right side of EditText
        search.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                final int DRAWABLE_LEFT = 0;
                final int DRAWABLE_TOP = 1;
                final int DRAWABLE_RIGHT = 2;
                final int DRAWABLE_BOTTOM = 3;

                if(event.getAction() == MotionEvent.ACTION_UP) {
                    if(event.getRawX() >= (search.getRight() - search.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width())) {
                        search.setText("");

                        return true;
                    }
                }
                return false;
            }
        });
        //Search user's input form Database
        search.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                dataAdapter.getFilter().filter(s.toString());
            }

            @Override
            public void afterTextChanged(Editable s) {
            }
        });

        dataAdapter.setFilterQueryProvider(new FilterQueryProvider() {
            public Cursor runQuery(CharSequence constraint) {
                return dbHelper.getSiDicByName(constraint.toString());
            }
        });

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Cursor cursor = (Cursor) listView.getItemAtPosition(position);
                String word = cursor.getString(cursor.getColumnIndexOrThrow("word"));
                String definition = cursor.getString(cursor.getColumnIndexOrThrow("definition"));
                Log.v("Click Item", word + " is clicked");
                Toast.makeText(getContext(), word + " is clicked", Toast.LENGTH_SHORT).show();
            }
        });

    }

}
导入android.database.Cursor;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.support.v4.widget.SimpleCursorAdapter;
导入android.text.Editable;
导入android.text.TextWatcher;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.MotionEvent;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.EditText;
导入android.widget.FilterQueryProvider;
导入android.widget.ListView;
导入android.widget.Toast;
公共类SinFragment扩展了片段{
专用静态SimpleCursorAdapter数据适配器;
私有静态字符串[]列;
私有静态int[]到;
私有静态ListView ListView;
私有静态游标;
私有静态测试适配器dbHelper;
公共服务{
//必需的空公共构造函数
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//打开现有数据库
dbHelper=newtestadapter(getContext());
dbHelper.createDatabase();
dbHelper.open();
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.fragment\u sin,容器,false);
//将数据从数据库获取到ListView
setListView(视图);
返回视图;
}
公共void setListView(视图){
cursor=dbHelper.getSiDic();
columns=新字符串[]{
“字”,
“定义”,
};
to=新整数[]{
R.id.word,
R.id.定义,
};
dataAdapter=新的SimpleCorsorAdapter(
getContext(),R.layout.item_sin,
光标,
柱,
到
0);
//将适配器分配给ListView
listView=(listView)view.findViewById(R.id.listView);
setAdapter(dataAdapter);
final EditText search=(EditText)view.findViewById(R.id.search);
//单击EditText右侧的清除按钮时清除EditText的文本
search.setOnTouchListener(新视图.OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件){
最终整数可绘制_左=0;
最终int可拉伸_TOP=1;
最终int可绘制的_右=2;
最终int可拉伸_底=3;
if(event.getAction()==MotionEvent.ACTION\u UP){
如果(event.getRawX()>=(search.getRight()-search.getCompoundDrawables()[DRAWABLE\u RIGHT].getBounds().width()){
search.setText(“”);
返回true;
}
}
返回false;
}
});
//搜索用户的输入表单数据库
search.addTextChangedListener(新的TextWatcher(){
@凌驾
更改前文本之前的公共void(字符序列s、int start、int count、int after){
}
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
dataAdapter.getFilter().filter(s.toString());
}
@凌驾
公共无效后文本已更改(可编辑){
}
});
setFilterQueryProvider(新的FilterQueryProvider(){
公共游标运行查询(CharSequence约束){
返回dbHelper.getSiDicByName(constraint.toString());
}
});
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
游标游标=(游标)listView.getItemAtPosition(位置);
String word=cursor.getString(cursor.getColumnIndexOrThrow(“word”);
字符串定义=cursor.getString(cursor.getColumnIndexOrThrow(“定义”);
Log.v(“点击项目”,点击word+);
Toast.makeText(getContext(),word+“已单击”,Toast.LENGTH_SHORT.show();
}
});
}
}
更新: 片段xml的代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    android:orientation="vertical"
    tools:context="com.mecduino.dicmec.SinFragment">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/search"
        android:padding="10dp"
        android:drawableLeft="@android:drawable/ic_menu_search"
        android:drawableRight="@android:drawable/ic_menu_close_clear_cancel"
        android:hint="Search..."
        android:background="@drawable/border"
        android:inputType="text" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="10dp"/>

    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/listview" />

</LinearLayout>

_sin.xml项的代码

    <?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="60dp"
    android:orientation="horizontal">

    <LinearLayout
        android:layout_width="0dip"
        android:layout_height="match_parent"
        android:layout_weight="0.5">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/word"
            android:padding="5dp"
            android:textSize="12dp"
            android:capitalize="words" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="0dip"
        android:layout_height="match_parent"
        android:layout_weight="1">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:lineSpacingMultiplier="1.5"
            android:padding="5dp"
            android:id="@+id/definition"
            android:textSize="15dp" />

    </LinearLayout>

</LinearLayout>

border.xml的代码

    <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#ffff" />
    <stroke android:width="1dip" android:color="#ce4416" />
    <corners
        android:bottomRightRadius="5dp"
        android:bottomLeftRadius="5dp"
        android:topLeftRadius="5dp"
        android:topRightRadius="5dp"/>
</shape>


不显示任何错误..在Toast中使用getApplicationContext()而不是getContext()显示xml、项和列表尝试。对我来说,这是:游标游标=(游标)listView.getItemAtPosition(位置);这似乎是错误的。我假设您一定得到了错误@Ritesh Gune:实际上,当我在ListView中单击项目时,我需要显示弹出的AlertDialog对话框。我需要测试SetonicClickListener的操作。这就是敬酒的目的。还有,为什么不是work Log.v(“单击项”,单击word+);