Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.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 访问片段中ListView中的单选按钮(从另一个片段获取updatet)_Android_Listview_Android Fragments - Fatal编程技术网

Android 访问片段中ListView中的单选按钮(从另一个片段获取updatet)

Android 访问片段中ListView中的单选按钮(从另一个片段获取updatet),android,listview,android-fragments,Android,Listview,Android Fragments,我在一个活动中有两个列表片段。当在左侧片段中选择一行时,我会在右侧片段中显示一些数据,这也是一个ListView。此视图的一行包含一个TextView和三个单选按钮 我的目标是获得这些按钮,例如设置值和设置onClickListener 我的问题是,我在正确的片段中选择的选项不起作用,但我不知道为什么。我尝试将ListFragment作为左侧片段和一个具有自定义id的ListView进行exend 我是否必须从ListFragment进行扩展,或者这与普通ListView相同? 是否必须使用on

我在一个活动中有两个列表片段。当在左侧片段中选择一行时,我会在右侧片段中显示一些数据,这也是一个ListView。此视图的一行包含一个TextView和三个单选按钮

我的目标是获得这些按钮,例如设置值和设置onClickListener

我的问题是,我在正确的片段中选择的选项不起作用,但我不知道为什么。我尝试将ListFragment作为左侧片段和一个具有自定义id的ListView进行exend

我是否必须从ListFragment进行扩展,或者这与普通ListView相同? 是否必须使用onActivityCreate设置onClickListener? 这段代码是多次尝试不同帖子中的一些代码的结果。我发现有一些错误

这是我左边的片段:

public class HeaderListFragment extends ListFragment {
private final static String TAG = "HeaderListFragment";
List<ChecklistItem> header;
static ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();


private DBManager db_manager;
private SimpleAdapter simpleAdapter;

//getstring -> BUG
String[] from = { "number","text" };
int[] to = { R.id.listele_header_no, R.id.listele_header_text};

public void buildList(){
    Log.v(TAG, "buildList");
    list = new ArrayList<HashMap<String,String>>();
    for (ChecklistItem item : header){
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("number", item.getnumber());
        map.put("text", item.gettext());        
        list.add(map);
    }
}

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);

    updateDetail(header.get(position).getparent_id());
}

@Override
public void onAttach(Activity activity) {
    // TODO Auto-generated method stub
    super.onAttach(activity);
}

@Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.headerfragment,
        container, false);

    db_manager = new DBManager(getActivity().getContentResolver());

    header = db_manager.getItemHeader();
    Log.v(TAG, "HEADER LIST SIZE "+header.size());


    buildList();

    simpleAdapter = new SimpleAdapter(getActivity(),
            list,
            R.layout.headeritem_row,
            from,
            to);
    setListAdapter(simpleAdapter);
    Log.v(TAG, "set adapter");


    return view;
  }

  // May also be triggered from the Activity
  public void updateDetail(int id) {

    QuestionListFragment fragment = (QuestionListFragment) getFragmentManager()
        .findFragmentById(R.id.questionFragment);
    if (fragment != null && fragment.isInLayout()) {
      fragment.setUI(id);
    } 
public class QuestionListFragment extends ListFragment {
private final static String TAG = "QuestionListFragment";

List<ChecklistItem> questions;
static ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
private DBManager db_manager;
private SimpleAdapter simpleAdapter;
private ProgressDialog dialog;
private RadioGroup radioGroup;
private RadioButton yes, na, open;
private ListView listview;

//getstring -> BUG
String[] from = { "number","text" };
int[] to = { R.id.listele_question_no, R.id.listele_question_text};


public void buildList(){
    Log.v(TAG, "buildList");
    list = new ArrayList<HashMap<String,String>>();
    for (ChecklistItem item : questions){
        Log.v(TAG, item.gettext());
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("number", item.getnumber());
        map.put("text", item.gettext());        
        list.add(map);
    }
}

@Override
public void onAttach(Activity activity) {
    // TODO Auto-generated method stub
    super.onAttach(activity);
}

 @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.questionfragment,
        container, false);

    Log.v(TAG, "onCreateView");



    db_manager = new DBManager(getActivity().getContentResolver());
    return view;
  }


 @Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Log.v(TAG, "onActivityCreated");
    listview = getListView();
    listview.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                    long arg3) {

                Log.d(TAG, "--> onItemClick listener..."); // You should see this now

                }*/
            }});
}


  public void setUI(Integer parent_id) {
      Log.v(TAG, "setUI");


      questions = db_manager.getQuestions(parent_id);
      buildList();
      simpleAdapter = new SimpleAdapter(getActivity(),
                list,
                R.layout.questionitem_row,
                from,
                to);

        listview.setAdapter(simpleAdapter);
        setListAdapter(simpleAdapter);
        Log.v(TAG, "set adapter");
我右边的片段:

public class HeaderListFragment extends ListFragment {
private final static String TAG = "HeaderListFragment";
List<ChecklistItem> header;
static ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();


private DBManager db_manager;
private SimpleAdapter simpleAdapter;

//getstring -> BUG
String[] from = { "number","text" };
int[] to = { R.id.listele_header_no, R.id.listele_header_text};

public void buildList(){
    Log.v(TAG, "buildList");
    list = new ArrayList<HashMap<String,String>>();
    for (ChecklistItem item : header){
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("number", item.getnumber());
        map.put("text", item.gettext());        
        list.add(map);
    }
}

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);

    updateDetail(header.get(position).getparent_id());
}

@Override
public void onAttach(Activity activity) {
    // TODO Auto-generated method stub
    super.onAttach(activity);
}

@Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.headerfragment,
        container, false);

    db_manager = new DBManager(getActivity().getContentResolver());

    header = db_manager.getItemHeader();
    Log.v(TAG, "HEADER LIST SIZE "+header.size());


    buildList();

    simpleAdapter = new SimpleAdapter(getActivity(),
            list,
            R.layout.headeritem_row,
            from,
            to);
    setListAdapter(simpleAdapter);
    Log.v(TAG, "set adapter");


    return view;
  }

  // May also be triggered from the Activity
  public void updateDetail(int id) {

    QuestionListFragment fragment = (QuestionListFragment) getFragmentManager()
        .findFragmentById(R.id.questionFragment);
    if (fragment != null && fragment.isInLayout()) {
      fragment.setUI(id);
    } 
public class QuestionListFragment extends ListFragment {
private final static String TAG = "QuestionListFragment";

List<ChecklistItem> questions;
static ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
private DBManager db_manager;
private SimpleAdapter simpleAdapter;
private ProgressDialog dialog;
private RadioGroup radioGroup;
private RadioButton yes, na, open;
private ListView listview;

//getstring -> BUG
String[] from = { "number","text" };
int[] to = { R.id.listele_question_no, R.id.listele_question_text};


public void buildList(){
    Log.v(TAG, "buildList");
    list = new ArrayList<HashMap<String,String>>();
    for (ChecklistItem item : questions){
        Log.v(TAG, item.gettext());
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("number", item.getnumber());
        map.put("text", item.gettext());        
        list.add(map);
    }
}

@Override
public void onAttach(Activity activity) {
    // TODO Auto-generated method stub
    super.onAttach(activity);
}

 @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.questionfragment,
        container, false);

    Log.v(TAG, "onCreateView");



    db_manager = new DBManager(getActivity().getContentResolver());
    return view;
  }


 @Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Log.v(TAG, "onActivityCreated");
    listview = getListView();
    listview.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                    long arg3) {

                Log.d(TAG, "--> onItemClick listener..."); // You should see this now

                }*/
            }});
}


  public void setUI(Integer parent_id) {
      Log.v(TAG, "setUI");


      questions = db_manager.getQuestions(parent_id);
      buildList();
      simpleAdapter = new SimpleAdapter(getActivity(),
                list,
                R.layout.questionitem_row,
                from,
                to);

        listview.setAdapter(simpleAdapter);
        setListAdapter(simpleAdapter);
        Log.v(TAG, "set adapter");
有了你的反馈,它就工作了!这是我的代码:

public class QuestionListFragment extends ListFragment {
private final static String TAG = "QuestionListFragment";

List<ChecklistItem> questions;
static ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
private DBManager db_manager;
private ProgressDialog dialog;
private ListViewCustomAdapter adapter;

public void buildList(){
    Log.v(TAG, "buildList");
    list = new ArrayList<HashMap<String,String>>();
    for (ChecklistItem item : questions){
        Log.v(TAG, item.gettext());
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("number", item.getnumber());
        map.put("text", item.gettext());        
        list.add(map);
    }
}

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
}

 @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.questionfragment,
        container, false);

    Log.v(TAG, "onCreateView");

    db_manager = new DBManager(getActivity().getContentResolver());

    return view;
  }


 @Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Log.v(TAG, "onActivityCreated");

    getListView().setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                    long arg3) {
                Log.d(TAG, "--> onItemClick listener..."); 
            }});

}


  public void setUI(Integer parent_id) {
      Log.v(TAG, "setUI");

      questions = db_manager.getQuestions(parent_id);
      buildList();  
      adapter = new ListViewCustomAdapter(getActivity(), (ArrayList) questions);
      setListAdapter(adapter);
      Log.v(TAG, "set adapter");

  }


  public class ListViewCustomAdapter extends BaseAdapter{
        ArrayList<ChecklistItem> itemList;
        public Activity context;
        public LayoutInflater inflater;

        public ListViewCustomAdapter(Activity context, ArrayList<ChecklistItem> itemList) {
            super();
            this.context = context;
            this.itemList = itemList;
            this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

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

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

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

        public class ViewHolder
        {
            TextView number;
            TextView text;
            RadioButton yes,na,open;
        }

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

            final int pos = position;

            ViewHolder holder;
            if(convertView==null)
            {
                holder = new ViewHolder();
                convertView = inflater.inflate(R.layout.questionitem_row, null);

                holder.text = (TextView) convertView.findViewById(R.id.listele_question_text);
                holder.number = (TextView) convertView.findViewById(R.id.listele_question_no);
                holder.yes = (RadioButton)convertView.findViewById(R.id.rb_yes);

                RadioButton rb = (RadioButton)convertView.findViewById(R.id.rb_yes);
                rb.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Log.v(TAG, "yes");
                        Log.v(TAG, questions.get(pos).gettext());
                    }
                });

                holder.yes = rb;

                convertView.setTag(holder);
            }
            else
                holder=(ViewHolder)convertView.getTag();
                ChecklistItem item = (ChecklistItem) itemList.get(position);
                holder.text.setText(item.gettext());
                holder.number.setText(item.getnumber());
                return convertView;
       }
  }

不要在主题中放置标签:尝试在布局文件中将您的单选按钮设置为不可聚焦,android:focusable=false。要查看用户何时检查其中一个单选按钮,您需要一个自定义适配器。谢谢您的回复。我禁用了这些单选按钮的焦点。现在我得到了一个事件,单击了listitem。我还编写了一个customadapter,在其中定义按钮并设置侦听器。