【问题标题】:Android ListActivity can it work with Custom ArrayAdapter holding 2 TextViews?Android ListActivity 可以与持有 2 个 TextViews 的自定义 ArrayAdapter 一起使用吗?
【发布时间】: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


【解决方案1】:

我现在确定答案是:

不,您不能在 ListActivity 中使用多个 TextView 实例化自定义数组适配器,它必须是 Activity ;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    相关资源
    最近更新 更多