安卓(Android)ListView 显示图片文字

一.代码实现

1.  “Activity_11\src\yan\activity_11\MainActivity.java”

package yan.activity_11; 

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView; 

public class MainActivity extends Activity {
  ListView listView;
  String [] titles={"标题1","标题2","标题3","标题4"};
  String [] texts={"文本内容A","文本内容B","文本内容C","文本内容D"};
  int [] resIds={R.drawable.icon,R.drawable.icon,R.drawable.icon,R.drawable.icon}; 

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    this.setTitle("BaseAdapter for ListView");
    listView=(ListView)this.findViewById(R.id.MyListView);
    listView.setAdapter(new ListViewAdapter(titles,texts,resIds));
  } 

  public class ListViewAdapter extends BaseAdapter{
    View [] itemViews; 

    public ListViewAdapter(String [] itemTitles, String [] itemTexts,
        int [] itemImageRes){
      itemViews = new View[itemTitles.length]; 

      for (int i=0; i<itemViews.length; ++i){
        itemViews[i] = makeItemView(itemTitles[i], itemTexts[i],
            itemImageRes[i]);
      }
    } 

    public int getCount()  {
      return itemViews.length;
    } 

    public View getItem(int position)  {
      return itemViews[position];
    } 

    public long getItemId(int position) {
      return position;
    } 

    private View makeItemView(String strTitle, String strText, int resId) {
      LayoutInflater inflater = (LayoutInflater)MainActivity.this
          .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

      // 使用View的对象itemView与R.layout.item关联
      View itemView = inflater.inflate(R.layout.listview_item, null); 

      // 通过findViewById()方法实例R.layout.item内各组件
      TextView title = (TextView)itemView.findViewById(R.id.itemTitle);
      title.setText(strTitle);
      TextView text = (TextView)itemView.findViewById(R.id.itemText);
      text.setText(strText);
      ImageView image = (ImageView)itemView.findViewById(R.id.itemImage);
      image.setImageResource(resId); 

      return itemView;
    } 

    public View getView(int position, View convertView, ViewGroup parent) {
      if (convertView == null)
        return itemViews[position];
      return convertView;
    }
  }
}

2.package yan.activity_11;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {
 ListView listView;
 String [] titles={"标题1","标题2","标题3","标题4"};
 String [] texts={"文本内容A","文本内容B","文本内容C","文本内容D"};
 int [] resIds={R.drawable.icon,R.drawable.icon,R.drawable.icon,R.drawable.icon};

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 this.setTitle("BaseAdapter for ListView");
 listView=(ListView)this.findViewById(R.id.MyListView);
 listView.setAdapter(new ListViewAdapter(titles,texts,resIds));
 }

 public class ListViewAdapter extends BaseAdapter{
 View [] itemViews;

 public ListViewAdapter(String [] itemTitles, String [] itemTexts,
  int [] itemImageRes){
  itemViews = new View[itemTitles.length];

  for (int i=0; i<itemViews.length; ++i){
  itemViews[i] = makeItemView(itemTitles[i], itemTexts[i],
   itemImageRes[i]);
  }
 }

 public int getCount() {
  return itemViews.length;
 }

 public View getItem(int position) {
  return itemViews[position];
 }

 public long getItemId(int position) {
  return position;
 }

 private View makeItemView(String strTitle, String strText, int resId) {
  LayoutInflater inflater = (LayoutInflater)MainActivity.this
   .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

  // 使用View的对象itemView与R.layout.item关联
  View itemView = inflater.inflate(R.layout.listview_item, null);

  // 通过findViewById()方法实例R.layout.item内各组件
  TextView title = (TextView)itemView.findViewById(R.id.itemTitle);
  title.setText(strTitle);
  TextView text = (TextView)itemView.findViewById(R.id.itemText);
  text.setText(strText);
  ImageView image = (ImageView)itemView.findViewById(R.id.itemImage);
  image.setImageResource(resId);

  return itemView;
 }

 public View getView(int position, View convertView, ViewGroup parent) {
  if (convertView == null)
  return itemViews[position];
  return convertView;
 }
 }
}

二.“Activity_11\res\layout\main.xml”

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:id="@+id/LinearLayout01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">  

    <ListView android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:id="@+id/MyListView">
    </ListView>
</LinearLayout> 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:id="@+id/LinearLayout01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <ListView android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:id="@+id/MyListView">
    </ListView>
</LinearLayout> 

三.“Activity_11\res\layout\listview_item.xml”

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
     android:layout_width="fill_parent"
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_height="wrap_content"
     android:paddingBottom="4dip"
     android:paddingLeft="12dip">
     <ImageView
        android:layout_width="wrap_content"
        android:id="@+id/itemImage"
        android:layout_height="fill_parent">
     </ImageView>
     <TextView
        android:text="TextView01"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:id="@+id/itemTitle"
        android:layout_toRightOf="@+id/itemImage"
        android:textSize="20dip">
     </TextView>
     <TextView
        android:text="TextView02"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:id="@+id/itemText"
        android:layout_toRightOf="@+id/itemImage"
        android:layout_below="@+id/itemTitle">
     </TextView>
</RelativeLayout> 
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
     android:layout_width="fill_parent"
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_height="wrap_content"
     android:paddingBottom="4dip"
     android:paddingLeft="12dip">
     <ImageView
        android:layout_width="wrap_content"
        android:id="@+id/itemImage"
        android:layout_height="fill_parent">
     </ImageView>
     <TextView
        android:text="TextView01"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:id="@+id/itemTitle"
        android:layout_toRightOf="@+id/itemImage"
        android:textSize="20dip">
     </TextView>
     <TextView
        android:text="TextView02"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:id="@+id/itemText"
        android:layout_toRightOf="@+id/itemImage"
        android:layout_below="@+id/itemTitle">
     </TextView>
</RelativeLayout>
(0)

相关推荐

  • Android实现图片文字轮播特效

    本文实例讲解了Android实现图片文字轮播特效的详细代码,分享给大家供大家参考,具体内容如下 图片轮播是类似知乎日报上的一个轮播效果,如下图. 好了直接进入正题,首先是出示一下效果: MainActivity: import java.util.ArrayList; import java.util.List; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService;

  • Android自定义实现图片加文字功能

    Android自定义实现图片加文字功能 分四步来写: 1,组合控件的xml; 2,自定义组合控件的属性; 3,自定义继承组合布局的class类,实现带两参数的构造器; 4,在xml中展示组合控件. 具体实现过程: 一.组合控件的xml 我接触的有两种方式,一种是普通的Activity的xml:一种是父节点为merge的xml.我项目中用的是第一种,但个人感觉第二种好,因为第一种多了相对或者绝对布局层. 我写的 custom_pictext.xml <?xml version="1.0&qu

  • 安卓(Android)ListView 显示图片文字

    一.代码实现 1.  "Activity_11\src\yan\activity_11\MainActivity.java" package yan.activity_11; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import a

  • Android开发实现ListView和adapter配合显示图片和文字列表功能示例

    本文实例讲述了Android开发实现ListView和adapter配合显示图片和文字列表功能.分享给大家供大家参考,具体如下: 实际效果: 布局文件: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://sc

  • Android自定义TextView实现文字图片居中显示的方法

    最近有个需求是这样的,人民币的符号"¥"因为安卓手机系统的不一致导致符号不是完全一样,所以用美工的给的图片代替,考虑到用的地方比较多,所以想着写一个继承于线性布局的组合控件,后来一想,安卓中不是有TextView吗,这个自带图片的控件,后来写了个demo,因为我是用的MatchParent,导致问题出现,人民币符号不是和文字一样的居中,因此才有了这篇博文,让我们来自定义TextView吧,这个场景用的比较多. 分析下TextView的源码 我们先来分析下TextView的源码,因为Te

  • Android DrawableTextView图片文字居中显示实例

    在我们开发中,TextView设置Android:drawableLeft一定使用的非常多,但Drawable和Text同时居中显示可能不好控制,有没有好的办法解决呢? 小编的方案是通过自定义TextView实现. 实现的效果图: 注:第一行为原生TextView添加android:drawableLeft 第二行为自定义TextView实现的效果. 实现思路: 继承TextView,覆盖onDraw(Canvas canvas),在onDraw中先将canvas进行translate平移,再调

  • android开发教程之使用listview显示qq联系人列表

    首先还是xml布局文件,在其中添加ListView控件: 主布局layout_main.xml 复制代码 代码如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"

  • Android ListView实现ImageLoader图片加载的方法

    本文实例讲述了Android ListView实现ImageLoader图片加载的方法.分享给大家供大家参考,具体如下: 最近一直忙着做项目,今天也是忙里偷闲,想写篇博客来巩固下之前在应用中所用的知识.之前我们可能会也会肯定遇到了图片的异步加载问题,然而我们也可能会遇到图片二次或多次加载,这是ListView的特性造成的,具体原因不在这里讨论,又或者是OOM等问题.今天要讲的是一个开源框架Imageloader,个人觉得非常的好用. 该框架在github的地址.https://github.co

  • Android ListView异步加载图片方法详解

    本文实例讲述了Android ListView异步加载图片方法.分享给大家供大家参考,具体如下: 先说说这篇文章的优点把,开启线程异步加载图片,然后刷新UI显示图片,而且通过弱引用缓存网络加载的图片,节省了再次连接网络的开销. 这样做无疑是非常可取的方法,但是加载图片时仍然会感觉到轻微的卡屏现象,特别是listview里的item在进行快速滑动的时候. 我找了一下原因,可能是在listview快速滑动屏幕的时候划过的item太多 而且每次调用getView方法后就会异步的在过去某个时间内用han

  • Android实现自定义带文字和图片Button的方法

    本文实例讲述了Android实现自定义带文字和图片Button的方法.分享给大家供大家参考.具体分析如下: 在Android开发中经常会需要用到带文字和图片的button,下面来讲解一下常用的实现办法. 一.用系统自带的Button实现 最简单的一种办法就是利用系统自带的Button来实现,这种方式代码量最小.在Button的属性中有一个是drawableLeft,这个属性可以把图片设置在文字的左边,但是这种方式必须让icon的背景色是透明的,如果icon的背景色不是透明的话,会导致点击按钮时i

  • Android Listview 滑动过程中提示图片重复错乱的原因及解决方法

    主要分析Android中Listview滚动过程造成的图片显示重复.错乱.闪烁的原因及解决方法,顺便跟进Listview的缓存机制. 1.原因分析 Listview item 缓存机制:为了使得性能更优,Listview会缓存行item(某行对应的view).listview通过adapter的getview函数获得每行的item.滑动过程中, a.如果某行item已经划出屏幕,若该item不在缓存内,则put进缓存,否则更新缓存: b.获取滑入屏幕的行item之前会先判断缓存中是否有可用的it

随机推荐