2015-11-13 66 views
1

我在一个片段中创建了一个ListView,并使用onStart()方法中名为Workout的类中的数据填充它。我设置了一个Adapter并且列表显示正常。我想现在能够获取用户点击的特定行的值,但无法实现onItemClicked()方法。有谁知道我怎么能得到这个价值?谢谢。onItemClicked()在片段

public class WorkoutListFragment extends Fragment { 
static interface WorkoutListListener{ 
    void itemClicked(long id); 
} 
private WorkoutListListener listener; 
private ListView workoutList; 
private LayoutInflater inflate; 

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    inflate = inflater; 
    return inflater.inflate(R.layout.fragment_workout_list, container, false); 
} 

@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
    this.listener = (WorkoutListListener)activity; 
} 

@Override//ISSUE IS IN HERE 
public void onStart() { 
    super.onStart(); 
    View view = getView(); 
    String[]names = new String[Workout.workouts.length]; 
    for (int i = 0; i < names.length; i++){ 
     names[i] = Workout.workouts[i].getName(); 
    } 
    if (view!=null){ 
     workoutList = (ListView)view.findViewById(R.id.listView); 
     ArrayAdapter<String>adapter = new ArrayAdapter<String>(inflate.getContext(), 
       android.R.layout.simple_list_item_1,names); 
     workoutList.setAdapter(adapter); 
    } 

    //HOW CAN I NOW GET THE VALUE OF THE ITEM CLICKED? 
    // I TRIED THIS BUT IT'S NOT RECOGNIZED 
    workoutList.setOnClickListener(new onItemClickListener); 
} 

回答

1

使用此:

workoutList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      // the 'position' argument is the position you are looking for 
    } 
}); 

编辑:

我注意到,你是不是初始化workoutList的ListView。你应该这样做在OnCreateView方法:

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_workout_list, container, false); 
    workoutList = (ListView) view.findViewById(R.id.workoutListView); // assuming that your listView's id is "@+id/workoutListView" 
    return view; 
}