2016-06-15 7 views
0

特定のアダプタでの断片で動作しません問題はなく、私のフラグメントクラスの関数onClickが機能します。 onItemClickは、私はとのフラグメントを得た

私は私のリストビューから要素をクリックしてみてください

が、何も起こっていない(私は2 onItemClick()メソッド、私のフラグメントのクラスの一つであり、私のアダプタクラス内の他の1を入れて、誰もが働きません。

私はこの関連の話題が見つかりました:Onclicklistner not working in fragment listview

をしかし、私は私のリストビュー(のみImageViewの)中に一つだけの要素を持っている、と私はアンドロイド入れた場合でも:

私のListView項目のみを含んで偽、何も変化にクリッカブルとフォーカス可能画像ビュー:

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <ImageView 
      android:id="@+id/item_operation_img" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:focusable="false" 
      android:scaleType="fitCenter" 
      android:adjustViewBounds="true" /> 
    </LinearLayout> 
</ScrollView> 

は、ここに私のフラグメントのクラスです:

public class FragmentOperation extends Fragment { 

private ListView listViewSelectOperation; 
private SelectOperationAdapter adapter4; 
private ArrayList<ListOperation> listOperations; 
private Button buttonFuturOperation; 
private Button buttonCurrentOperation; 
private Button buttonPastOperation; 


public FragmentOperation(){ 

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle SavedInstanceState){ 
    View rootView = inflater.inflate(R.layout.fragment_operation, container, false); 


    buttonFuturOperation = (Button)rootView.findViewById(R.id.futurOperationButton); 
    buttonCurrentOperation = (Button)rootView.findViewById(R.id.currentOperationButton); 
    buttonPastOperation = (Button)rootView.findViewById(R.id.pastOperationButton); 

    listViewSelectOperation = (ListView)rootView.findViewById(R.id.lv_operations); 
    listOperations = new ArrayList<>(); 


    int[] imageOperation = {R.drawable.operations_1, R.drawable.operations_2, R.drawable.operations_3, R.drawable.operations_4, R.drawable.operations_5, R.drawable.operations_6}; 

    for (int i = 0; i < imageOperation.length; i++) { 
     if((i % 2) == 0){ 
      listOperations.add(new ListOperation(imageOperation[i])); 

     } else { 
      listOperations.add(new ListOperation(imageOperation[i])); 
     } 
    } 

    adapter4 = new SelectOperationAdapter(this.getActivity().getApplicationContext(), listOperations); 
    listViewSelectOperation.setAdapter(adapter4); 

    buttonFuturOperation.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.i("CLICK BUTTON1", "BUTTON1"); 
     } 
    }); 

    buttonCurrentOperation.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.i("CLICK BUTTON2", "BUTTON2"); 
     } 
    }); 

    buttonPastOperation.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.i("CLICK BUTTON3", "BUTTON3"); 
     } 
    }); 

    listViewSelectOperation.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      Log.i("CLICK position", String.valueOf(position)); 
      Log.i("CLICK id", String.valueOf(id)); 

      final FragmentTransaction ft = getFragmentManager().beginTransaction(); 
      ft.replace(R.id.main_content, new FragmentOperationDetail()); 
      ft.commit(); 
     } 
    }); 


    return rootView; 
} 
} 

、ここでは私のアダプタクラスです:

public class SelectOperationAdapter extends BaseAdapter { 

ArrayList<ListOperation> myList = new ArrayList<>(); 
Context context; 

public SelectOperationAdapter(Context context, ArrayList<ListOperation> myList) { 
    this.context = context; 
    this.myList = myList; 
} 

@Override 
public int getCount() { 
    return myList.size(); 
} 

@Override 
public Object getItem(int position) { 
    return myList.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    MyViewHolder mViewHolder = null; 
    View row = convertView; 

    if (row == null) { 
     LayoutInflater mInflater = (LayoutInflater) context 
       .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 

     row = mInflater.inflate(R.layout.item_select_operation, parent, false); 


     mViewHolder = new MyViewHolder(); 
     mViewHolder.item_operation_img = (ImageView) row 
       .findViewById(R.id.item_operation_img); 
     row.setTag(mViewHolder); 
    } else { 
     mViewHolder = (MyViewHolder) row.getTag(); 
    } 
    ListOperation listItem = (ListOperation) getItem(position); 

    mViewHolder.item_operation_img.setImageResource(listItem.getImgOperation()); 

    row.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      //the row has been clicked 
      //do whatever you want with 
      Log.i("CLICK", "CLICKDED"); 
     } 
    }); 
    return row; 
} 

private class MyViewHolder { 
    ImageView item_operation_img; 
} 
} 
+0

'getView'メソッドで' row.setClickable(true); 'を設定しようとしましたか? – antonio

+0

私は他の答えで言うように、私はrow.onclickを今すぐ(row.setClickable(true)を入れれば) しかし、私のフラグメントクラスで私のlistViewSelectOperation.onItemClick()に到達する方法はありますか?クリックしたアイテムのID? – gamerounet

答えて

0

あなたの行のXMLにandroid:clickable="true"を設定することでのLinearLayoutをクリック可能にすることができます。

+0

最後に、私は自分の線に到達することができます。私の線形描画でclickable = trueを追加した後でクリックします。 私のフラグメントクラスのmyListViewelectOperation.onItemClick()に到達する方法はありますか?クリックされた項目 – gamerounet

関連する問題