使用以下代码,我正确地从mysql db接收动态列表并将元素放在listview中。
public class MenuActivity extends ListActivity implements FetchDataListener {
private ProgressDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
initView();
}
private void initView() {
// show progress dialog
dialog = ProgressDialog.show(this, "", "Loading..");
String url = "http://www.*********.php";
FetchDataTask task = new FetchDataTask(this);
task.execute(url);
}
@Override
public void onFetchComplete(List<Application> data) {
// dismiss the progress dialog
if(dialog != null) dialog.dismiss();
// create new adapter
ApplicationAdapter adapter = new ApplicationAdapter(this, data);
// set the adapter to list
setListAdapter(adapter);
}
@Override
public void onFetchFailure(String msg) {
// dismiss the progress dialog
if(dialog != null) dialog.dismiss();
// show failure message
Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
}
这是我的数组适配器:
public class ApplicationAdapter extends ArrayAdapter<Application>{
private List<Application> items;
public ApplicationAdapter(Context context, List<Application> items) {
super(context, R.layout.app_cat_list, items);
this.items = items;
}
@Override
public int getCount() {
return items.size();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if(v == null) {
LayoutInflater li = LayoutInflater.from(getContext());
v = li.inflate(R.layout.app_cat_list, null);
}
Application app = items.get(position);
if(app != null) {
TextView titleText = (TextView)v.findViewById(R.id.titleTxt);
if(titleText != null) titleText.setText(app.getTitle());
}
return v;
}
现在我想点击单行并打开另一个通过intent extra传递一些值的活动。 我应该在哪里实现点击监听器? 我很确定它应该插入&#34; getView&#34;但我如何通过意图传递app.getTitle()?我知道如何通过额外的意图,尝试但没有点击发生。 任何帮助将不胜感激,谢谢
答案 0 :(得分:1)
现在我想点击单行并打开另一个活动传递 一些价值通过意图额外。我应该在哪里实现点击监听器?
无需添加OnItemClickListener
,因为在MenuActivity
中扩展了ListActivity,因此只需覆盖onListItemClick
方法来处理ListView行点击:
@Override
public void onListItemClick(ListView l, View view, int position, long id) {
// your code here...
}
我是如何通过意图传递app.getTitle()的?
使用onListItemClick
参数
view
中获取选定的行TextView值
TextView txtView=(TextView)v.findViewById(R.id.titleTxt);
String selectedText=txtView.getText().toString();
使用selectedText
在下一个活动中使用Intent发送值
答案 1 :(得分:0)
将它放在你的getView()
中 v.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent =new Intent(context, YourActivity.class);
context.startActivity(intent);
}
});
答案 2 :(得分:0)
可以有多种方式,其中之一是:
在你的活动的listview上设置onItemClickListner,它会给你一个回调,即onListItemClick。但正如你所说,你想要标题,你必须在getView方法中的convertView上设置标签,如covertView.setTag(&#34; itemTitle&#34;);并在你的onListItemClick中从视图中获取标记并将其转换为标题,如v.getTag()。toString();并将其设置在您想要的任何位置。 follwoing是完整的代码:
@Override
public void onListItemClick(ListView l, View view, int position, long id) {
String title = view.getTag().toString();
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("title", title);
startActivity(intent);
// your code here... }
如果卡在任何地方,请发帖。