【问题标题】:Get Title and Description when Title item is clicked on Listview android在Listview android上单击标题项时获取标题和描述
【发布时间】:2017-06-06 13:58:17
【问题描述】:

我使用 JSON 从 Web 服务器获取数据项 Title 和 Description。我知道如何解析它,使用自定义适配器并仅使用标题填充列表视图。我希望​​它打开一个新活动并显示单击项目的标题和描述。我是否必须创建一个新的自定义适配器来填充此列表视图?我应该从活动的这一侧传递什么以及如何在另一侧接收它?提前致谢。

 displayTitleAdapter = new DisplayTitleAdapter(this, R.layout.rowlayout);
    listView = (ListView)findViewById(R.id.listviewfinal);
    listView.setAdapter(displayTitleAdapter);
    listView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });  

这是我的 Adapter 类的 getView 方法

public View getView(int position,  View convertView,  ViewGroup parent) {
    View row;
    row = convertView;
    ReqHolder reqHolder;
    if(row == null){
        LayoutInflater layoutInflate = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        row = layoutInflate.inflate(R.layout.rowlayout, parent, false);
        reqHolder = new ReqHolder();

        reqHolder.Title = (TextView)row.findViewById(R.id.title_title);
        reqHolder.Requirement = (TextView)row.findViewById(R.id.req_req);

        row.setTag(reqHolder);
    }
    else{
        reqHolder = (ReqHolder)row.getTag();
    }
    //Requirements is the model class with getter and setter methods for Fields Title and Requirement.
    Requirements requirements = (Requirements) this.getItem(position);
    reqHolder.Title.setText(requirements.getTitle());
    reqHolder.Requirement.setText(requirements.getRequirement());
    return row;
}

static class ReqHolder{
    TextView Title;
     TextView Requirement;
}

}

【问题讨论】:

    标签: android json listview android-arrayadapter


    【解决方案1】:

    效果很好:

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Object o = listView.getItemAtPosition(position);
                    UserConnected str=(UserConnected) o;//As you are using Default String Adapter
                    Toast.makeText(getBaseContext(),str.getPrenom(), Toast.LENGTH_SHORT).show();
                }
            });
    

    【讨论】:

    • 我用这个方法发送序列化的类和@dh19 的方法来接收它,它成功了!谢谢。
    【解决方案2】:

    这是我为我做的,请确保你的模态类实现了可序列化。

    主活动:

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent i = new Intent(getApplicationContext(),Main2Activity.class);
                i.putExtra("Question",questionArrayList.get(position));
                startActivity(i);
            }
        });
    

    在我的主要活动中,我在我的列表视图上设置了一个项目点击监听器,然后使用意图类启动一个活动。

    在我的下一堂课中,我得到了我放入意图(问题)中的对象,并显示了我想使用我的模态类中的 getter 和 setter 的文本

    活动 2:

    public class Main2Activity extends AppCompatActivity {
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activitiy_main2);
        Question q = (Question) getIntent().getSerializableExtra("Question");
    
        TextView yourAnswer= (TextView)findViewById(R.id.title);
        TextView correctAnswer = (TextView)findViewById(R.id.description);
    
        yourAnswer.setText(q.getYourAnswer());
        correctAnswer.setText(q.getCorrectAnswer());
    }
    }
    

    希望这对您有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-16
      • 2019-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多