在 Listview 上单击标题项时获取标题和描述 android
Get Title and Description when Title item is clicked on Listview android
我使用 JSON 从 Web 服务器获取数据项标题和描述。我知道如何解析它,使用自定义适配器并仅使用标题填充列表视图。我希望它打开一个新的 activity 并显示所单击项目的标题和说明。我是否必须创建一个新的自定义适配器来填充此列表视图?我应该从 activity 的这一边传递什么,我如何在另一边接收它?提前致谢。
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 class' 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;
}
}
这是我为我做的,请确保你的模态 class 实现了 Serializable。
主要活动:
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);
}
});
在我的主要 activity 中,我在我的列表视图上设置了一个项目点击侦听器,然后使用 class.
意图启动了一个 activity
在我的下一个 class 中,我得到了我放入意图(问题)中的对象并显示了我想要使用模态 class
中的 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());
}
}
希望这对您有所帮助!
效果不错:
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();
}
});
我使用 JSON 从 Web 服务器获取数据项标题和描述。我知道如何解析它,使用自定义适配器并仅使用标题填充列表视图。我希望它打开一个新的 activity 并显示所单击项目的标题和说明。我是否必须创建一个新的自定义适配器来填充此列表视图?我应该从 activity 的这一边传递什么,我如何在另一边接收它?提前致谢。
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 class' 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;
}
}
这是我为我做的,请确保你的模态 class 实现了 Serializable。
主要活动:
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);
}
});
在我的主要 activity 中,我在我的列表视图上设置了一个项目点击侦听器,然后使用 class.
意图启动了一个 activity在我的下一个 class 中,我得到了我放入意图(问题)中的对象并显示了我想要使用模态 class
中的 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());
}
}
希望这对您有所帮助!
效果不错:
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();
}
});