【发布时间】:2015-03-29 11:48:34
【问题描述】:
在 Activity 中使用带有多个 TextView 的自定义数组适配器很容易。
但是 ListActivity 简化了许多事情,例如使用 OnItemClickListner。
所以问题很简单:我可以在 ListActivity 而不是在 Activity 中用多个 TextView 实例化自定义数组适配器吗?
好的,这里是代码,为了测试目的,它非常简化。 所有的 XML 数组都消失了,它们是用 Java 硬编码的。我想使用注释掉的代码。这段代码我想在 MainActivity 类中使用扩展 ListActivity 而不是 Activity,可以做到吗?
package com.example.t22c19s14listtest;
import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnItemClickListener {
// public class MainActivity extends ListActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView list = (ListView)findViewById(R.id.listView1);
int [] images = {R.drawable.i,R.drawable.j,};
String[] titleArray = new String[] { "Android", "iPhone", };
String[] descriptionArray = new String[] { "This is Android", "This is iPhone", };
MyAdapter adapter = new MyAdapter(this, titleArray, images, descriptionArray);
list.setAdapter(adapter);
list.setOnItemClickListener(this);}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
//String item = (String) getAdapter().getItem(position);
Toast.makeText(this, "Selected", Toast.LENGTH_LONG).show();}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true; }
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item); }}
适配器看起来像这样;)
package com.example.t22c19s14listtest;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class MyAdapter extends ArrayAdapter<String> {
Context context;
int[] images;
String[] titleArray;
String[] descriptionArray;
String title;
MyAdapter(Context c, String [] titles, int imgs[], String [] desc) {
super(c, R.layout.single_row , R.id.textView4, titles);
this.context=c;
this.images=imgs;
this.titleArray=titles;
this.descriptionArray=desc;}
@Override
public View getView (int position, View convertView, ViewGroup parent ) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.single_row,parent, false);
ImageView myImage = (ImageView) row.findViewById(R.id.imageView1);
TextView myTitle = (TextView) row.findViewById(R.id.textView4);
TextView myDescryption = (TextView) row.findViewById(R.id.textView2);
myImage.setImageResource(images[ position] );
myTitle.setText(titleArray[position]);
myDescryption.setText(descriptionArray[position]);
return row; }}
【问题讨论】:
-
你应该添加你之前尝试过的代码然后寻求帮助
-
好吧,我可以编辑并附加一些代码,但是你知道 Java 代码是怎么回事,这不是解释语言,问题简单易懂。
-
好吧,我什至不会在此处附加代码。 好吧,在这种情况下,我们不会帮助您,因为我们不知道您的问题:P 老实说,我发现问题不清楚。
-
你觉得有什么不清楚的问题吗?再简单不过了:) 你要我附上哪个代码?一个工作还是一个不工作?
标签: android listview textview android-arrayadapter