Android ListActivity能否与包含2个文本视图的自定义ArrayAdapter配合使用?

Android ListActivity能否与包含2个文本视图的自定义ArrayAdapter配合使用?,android,listview,textview,android-arrayadapter,Android,Listview,Textview,Android Arrayadapter,在“活动”中使用带有多个文本视图的自定义数组适配器很容易 但是ListActivity简化了许多事情,例如使用McClickListner 所以问题很简单:我可以在ListActivity而不是Activity中实例化具有多个TextView的自定义数组适配器吗 好的,这是代码,出于测试目的,它非常简化。 所有的XML数组都消失了,它们是用Java硬编码的。我想使用输出代码。这段代码在MainActivity类中有效,扩展ListActivity而不是Activity,可以吗 package c

在“活动”中使用带有多个文本视图的自定义数组适配器很容易

但是ListActivity简化了许多事情,例如使用McClickListner

所以问题很简单:我可以在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;
导入android.app.Activity;
导入android.app.ListActivity;
导入android.os.Bundle;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
导入android.widget.Toast;
公共类MainActivity扩展活动实现了McClickListener{
//公共类MainActivity扩展了ListActivity
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView列表=(ListView)findViewById(R.id.listView1);
int[]images={R.drawable.i,R.drawable.j,};
字符串[]titleArray=新字符串[]{“Android”、“iPhone”、};
String[]descriptionArray=新字符串[]{“这是Android”,“这是iPhone”,};
MyAdapter=新的MyAdapter(此、标题数组、图像、描述数组);
list.setAdapter(适配器);
list.setOnItemClickListener(this);}
@凌驾
公共视图单击(AdapterView arg0、视图arg1、整型arg2、长型arg3){
//字符串项=(字符串)getAdapter().getItem(位置);
Toast.makeText(此“已选定”,Toast.LENGTH_LONG).show();}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.main,menu);
返回true;}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
int id=item.getItemId();
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(item);}
适配器看起来是这样的;)

package com.example.t22c19s14listtest;
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.ImageView;
导入android.widget.TextView;
公共类MyAdapter扩展了ArrayAdapter{
语境;
int[]图像;
字符串[]titleArray;
字符串[]描述数组;
字符串标题;
MyAdapter(上下文c,字符串[]标题,int-imgs[],字符串[]描述){
super(c,R.layout.single_row,R.id.textView4,titles);
context=c;
这个.images=imgs;
this.titleArray=标题;
this.descriptionArray=desc;}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
视图行=充气机。充气(右布局。单行,父,假);
ImageView myImage=(ImageView)row.findViewById(R.id.imageView1);
TextView myTitle=(TextView)row.findViewById(R.id.textView4);
TextView myDescryption=(TextView)row.findViewById(R.id.textView2);
setImageResource(图像[位置]);
myTitle.setText(titleArray[位置]);
myDescryption.setText(描述数组[位置]);
返回行;}}

我现在肯定地知道答案是:


否您不能在ListActivity中实例化具有多个文本视图的自定义数组适配器(它必须是Activity;)

您应该添加您之前尝试过的代码,然后请求帮助。当然,我可以编辑和附加一些代码,但您知道Java代码是如何使用的。这不是解释语言,问题是直截了当的,很容易理解。我甚至不会在这里附加代码。在这种情况下,我们不会帮助你,因为我们不知道你的问题:P老实说,我觉得这个问题不清楚。你觉得这个问题有什么不清楚的地方?再简单不过了:)您想让我附加哪个代码?工作还是不工作?
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;  }}