2016-10-01 2 views
0

すべては機能しますが、「正しい方法は何ですか?」という質問がありますか?リストの項目を選択すると、インデントやトーストを呼び出すことができますか?

私は、このフラグメントは、ListViewコントロールを呼び出し、それにアダプタを追加します。この断片に

package com.nielyouri.pluff.ui.fragments; 

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.ListView; 

import com.nielyouri.pluff.R; 
import com.nielyouri.pluff.adapters.CourseListAdapter; 
import com.nielyouri.pluff.providers.WeekProvider; 

public class DayFragment extends Fragment { 

    private static final String TAG = DayFragment.class.getSimpleName(); 

    private ListView mListView = null; 

    @Override 
    public View onCreateView(LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) { 
     WeekProvider provider = new WeekProvider(); 
     View view = inflater.inflate(R.layout.course_list, null); 

     Bundle bundle = getArguments(); 

     // Yay a day is given 
     if (bundle != null) { 
      int day = bundle.getInt("day"); 

      Log.i(TAG, String.format("Day: %d", day)); 

      CourseListAdapter adapter = new CourseListAdapter(getActivity(), provider.getDays().get(day)); 

      ListView listView = (ListView) view.findViewById(R.id.list_view); 

      if (listView != null) { 
       listView.setAdapter(adapter); 
      } 
     } 

     return view; 
    } 
} 

を持っています。私は、リスト内の項目をクリックすると

package com.nielyouri.pluff.adapters; 

import android.app.Activity; 
import android.content.Context; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 

import com.nielyouri.pluff.R; 
import com.nielyouri.pluff.model.Day; 

public class CourseListAdapter extends BaseAdapter { 

    private static final String TAG = CourseListAdapter.class.getSimpleName(); 

    private Context mContext; 

    public Context getContext() { 
     return mContext; 
    } 

    private final Day mDay; 

    public Day getDay() { 
     return mDay; 
    } 

    public CourseListAdapter(final Activity context, Day day) { 
     mContext = context; 
     mDay = day; 
    } 

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

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

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

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder viewHolder; 

     if (convertView == null) { 
      viewHolder = new ViewHolder(); 
      convertView = LayoutInflater.from(mContext).inflate(R.layout.course_items, parent, false); 

      viewHolder.course = (TextView) convertView.findViewById(R.id.course); 

      convertView.setTag(viewHolder); 
     } else { 
      viewHolder = (ViewHolder) convertView.getTag(); 
     } 

     viewHolder.course.setText(mDay.getCourses().get(position).getName()); 

     return convertView; 
    } 

    private class ViewHolder { 
     TextView course; 
    } 
} 

getItemId方法は、IDを返します。

今、私の主な質問は:

私は私のリストビュー内の項目をクリックしたとき、私はトーストや意図すべきコード内の適切な場所?

答えて

0

あなたはonItemClickメソッドがあります。ここで は一例です:http://www.ezzylearning.com/tutorial/handling-android-listview-onitemclick-event

そして、あなたは、この行の下に、たとえば、あなたのフラグメント内でこのメソッドを追加する必要があります。もちろん

ListView listView = (ListView) view.findViewById(R.id.list_view); 
if (listView != null) { 
    listView.setAdapter(adapter); 
} 

が、それはきれいなアーキテクチャのアプローチではありませんが、今の私があると思います十分な。

0
@Override 
    public View onCreateView(LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) { 
     WeekProvider provider = new WeekProvider(); 
     View view = inflater.inflate(R.layout.course_list, null); 
     ListView listView = (ListView) view.findViewById(R.id.list_view); 

     Bundle bundle = getArguments(); 

     // Yay a day is given 
     if (bundle != null) { 
      int day = bundle.getInt("day"); 

      Log.i(TAG, String.format("Day: %d", day)); 

      CourseListAdapter adapter = new CourseListAdapter(getActivity(), provider.getDays().get(day)); 


      if (listView != null) { 
       listView.setAdapter(adapter); 
      } 
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 
      Toast.makeText(getActivity(), "string you want to show" , Toast.LENGTH_LONG).show(); 

} 
}); 
     } 


     return view; 
    } 
} 
関連する問題