0

私はフラグメントにリストビューを持っています。これは私の現在のコードです:

public static class AllSectionFragment extends Fragment {

    public static final String ARG_SECTION_NUMBER = "section_number";

    public AllSectionFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_tasks_all,
                container, false);
        // /////////////////////////////////////////////////////////////////
        // Set up all components here:: ie text views , buttons lists etc.//
        // that correspond to the layout fragment xml file                //
        ////////////////////////////////////////////////////////////////////
        TextView dummyTextView = (TextView) rootView
                .findViewById(R.id.fragment_tasks_all_textView);
        dummyTextView.setText(Integer.toString(getArguments().getInt(
                ARG_SECTION_NUMBER)));

        ArrayList<String> arrayList = new ArrayList<String>();
        ListView allList = (ListView) rootView
                .findViewById(R.id.fragment_tasks_all_list);
        MyCustomAdapter mAdapter = new MyCustomAdapter(getActivity(),
                arrayList); // Class to populate a ListView with an
                            // ArrayList
        allList.setAdapter(mAdapter);
        // Populate array list
        for (int i = 0; i < 5; i++) {
            arrayList.add(" All Task " + i);
        }
        mAdapter.notifyDataSetChanged();

        return rootView;
    }

    public void onListItemClick(ListView l, View v, int position, long id) {
        System.out.println("pos: "+ position);
    }
}

そして私のlayout.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:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".TasksActivity$DummySectionFragment" >

<TextView
    android:id="@+id/fragment_tasks_all_textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<ListView
    android:id="@+id/fragment_tasks_all_list"
    android:layout_width="fill_parent"
    android:layout_height="0dip"
    android:layout_weight="0.41"
    android:cacheColorHint="#00000000"
    android:clickable="true"
    android:listSelector="@android:color/transparent"
    android:transcriptMode="alwaysScroll" >

</ListView>

初めに。リスト内のアイテムをクリックできるようにするにはどうすればよいですか?

次に、onclick リスナーを追加する方法を説明します。

4

3 に答える 3

0

同様の問題があり、onClick メソッドを使用してインターフェイスを作成し、それをフラグメントで実装することで解決しました。これを試してください:

インターフェイスを作成します。

MyOnViewClickListener.java

public interface MyOnViewClickListener {
    public void myOnViewClickListener(View v);
}

カスタム アダプター クラスで、MyOnViewClickListener を引数として渡すコンストラクターを作成します。

private Context context;
private MyOnViewClickListener itemListener;
private List<String> items;

public MyCustomAdapter(Context context, List<String> items, MyOnViewClickListener itemListener) {

        this.itemListener = itemListener;
        this.context = context;
        this.items = items;
}

getView ()メソッド内に、次のように入力します。

LayoutInflater inflater = getLayoutInflater();
View row = inflater.inflate(R.layout.your_row_layout, parent, false);

TextView textView1 = (TextView) row.findViewById(R.id.quizchallenge);
    textView1.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            itemListener.myOnViewClickListener(v);
        }
});

最後に、フラグメント クラスで、新しいインターフェイスを実装します

public class ListFriendFragment extends Fragment implements MyOnViewClickListener  {
.
.
.
@Override
public void myOnViewClickListener(View v){
    //call your method
    quickQuiz();
}

アダプターをセットアップします。

adapter = new MyCustomAdapter(getContext(), myItemsList, MyFragment.this);
于 2017-05-23T04:07:35.157 に答える