【问题标题】:trying to add a Custom ListView With an Adapter to a Fragment?试图将带有适配器的自定义 ListView 添加到片段?
【发布时间】:2014-03-25 15:45:02
【问题描述】:

我正在尝试将带有 AdapterCustom ListView 添加到 Fragment。 我不知道问题到底出在哪里,我想我已经准备好一切,但我无法摆脱 Unfortunately Stopped 消息。 我使用了调试并且知道它在哪里崩溃;

Fragment 类中的

for (int i = 0;i<4;i++){ . . . questions.add(question);

当调试到达这条语句时它结束。

片段

import java.util.List;

import code.me.R.id;
import android.R.layout;
import android.app.Application.ActivityLifecycleCallbacks;
import android.app.Fragment;
import android.annotation.SuppressLint;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

@SuppressLint("NewApi")
public class Fragment1 extends Fragment 
{
    ListView lv;
    List<Question> questions;
    Integer[] Q_Id ;
    String[] AskerUserName =   {"Jack"      ,"John"    ,"Lio"      ,"Sam"         ,"Mike"        };
    String[] AnswererUserName ={"Jacob"     ,"Mario"   ,"Tom"      ,"Shon"        ,"Jasmine"     };
    String[] Qusetion =        {"What?"     ,"Where?"  ,"When"     ,"How?"        ,"Who?"        };
    String[] Answer =          {"jjjjjjjjjj","llllllll","fffffffff","eeeeeeeeeeee","oooooooooooo"};

    @Override
    public View onCreateView( LayoutInflater inflater, 
        ViewGroup container,
        Bundle savedInstanceState )
    {
        for (int i = 0;i<4;i++){
            int qid =  i;
            String AUName = AskerUserName[i].toString();
            String AnUName = AnswererUserName[i].toString();
            String Ans = Answer[i].toString();
            String Ques = Qusetion[i].toString();
            Question question = new Question(qid, AUName, AnUName, Ans, Ques);
            questions.add(question);


        }
        View view = inflater.inflate(R.layout.frag1, container, false);
        QuestionsAdapter questad = new QuestionsAdapter(getActivity(),questions);
        lv = (ListView) view.findViewById(id.listView1);
        lv.setAdapter(questad);


        return inflater.inflate( R.layout.frag1, 
            container, false );
    }
}

适配器

    import java.util.List;



import code.me.R.id;
import android.R.layout;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class QuestionsAdapter extends BaseAdapter {

    private final Activity context;
    public List<Question> questions;
    LayoutInflater inflater;


    public QuestionsAdapter(Activity context,List<Question> qu) {


        this.context = context;
        this.questions = qu;



        // TODO Auto-generated constructor stub
    }


    @Override
    public View getView(int position, View view , ViewGroup parent){
        View rowView = view;
        if(view == null)
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        rowView = inflater.inflate(R.layout.question_answer_item, null,false);
        TextView askerUserName = (TextView) view.findViewById(id.askerUsername);
        askerUserName.setText(questions.get(position).getAskerUserName().toString());
        TextView question = (TextView) view.findViewById(id.Question);
        question.setText(questions.get(position).getQuestion().toString());
        TextView ratingView = (TextView) view.findViewById(id.RatingAsker);
        //ratingView.setText(questions.get(position)._RatingU);
        TextView ratingAnswerer = (TextView) view.findViewById(id.RatingAnswerer);
        //ratingAnswerer.setText(questions.get(position).getRatingView());

        return rowView;
    }


    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return 0;
    }


    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return questions.get(position);
    }


    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return questions.get(position)._QId;
    }



}

Class_Question

    public class Question {

    private

     String _Answer ;
     String _AnswererUserName;
     String _AskerUserName ;
     String _Question ;
     Integer _QId;
     Integer _RatingU;
     Integer _RatingQ;

    public Question (int Q_Id,String AUName,String AnUName,String  Ans,String Ques){
        _QId = Q_Id;
        _AnswererUserName = AnUName;
        _AskerUserName = AUName;
        _Answer = Ans;
        _Question = Ques;
    }
    public String getAnswer() {
        // TODO Auto-generated method stub
        return _Answer;
    }


    public String getAnswererUserName() {
        // TODO Auto-generated method stub
        return _AnswererUserName;
    }


    public String getAskerUserName() {
        // TODO Auto-generated method stub
        return _AskerUserName;
    }

    public String getQuestion() {
        // TODO Auto-generated method stub
        return _Question;
    }


    public int getRatingView() {
        // TODO Auto-generated method stub
        return _RatingU;
    }


    public void setRatingQ() {
        // TODO Auto-generated method stub

    }

    public int getRatingQ() {
        // TODO Auto-generated method stub
        return _RatingQ;
    }
}

【问题讨论】:

    标签: android android-layout android-fragments android-listview baseadapter


    【解决方案1】:

    您永远不会在片段中初始化 List&lt;Question&gt; questions

    【讨论】:

      【解决方案2】:

      您永远不会初始化您的问题集合。这就是当您尝试在 onCreateView 中添加问题时它停止的原因。最初初始化列表问题,或者在尝试向其中添加内容之前的一段时间。

      【讨论】:

      • 添加行 List&lt;Question&gt; questions = new ArrayList&lt;Question&gt;(); 成功了,
      • 我在添加 ListView /w Custom Item XML 时仍然遇到问题,有任何建议可以查看,我已经阅读了有关使用 ListFragment 和更改 XML 中的 @id 的内容,但 Fragment1 仍然没有显示列表
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-15
      • 1970-01-01
      • 2019-04-14
      • 2013-05-21
      • 1970-01-01
      相关资源
      最近更新 更多