Android 使用listview不以静态方式显示数据

Android 使用listview不以静态方式显示数据,android,android-layout,listview,android-listview,Android,Android Layout,Listview,Android Listview,我是android新手,我正在listview上工作。我正在尝试使用xml中的listview和类文件中的adapter来显示数据。我正在处理以下3个文件 第一个文件:activity_main.xml 我的问题是:现在我想显示row1.xml的数据,但我没有动态数据。如何使用third.class文件显示数据。您应该阅读。它有一些方便的概念,你需要了解一下 基本概念是,您需要将ListView链接到一个适配器,该适配器填充行并将它们添加到ListView 查看row1.xml,您似乎需要一个对

我是android新手,我正在listview上工作。我正在尝试使用xml中的listview和类文件中的adapter来显示数据。我正在处理以下3个文件

第一个文件:activity_main.xml

我的问题是:现在我想显示row1.xml的数据,但我没有动态数据。如何使用third.class文件显示数据。

您应该阅读。它有一些方便的概念,你需要了解一下

基本概念是,您需要将ListView链接到一个适配器,该适配器填充行并将它们添加到ListView

查看row1.xml,您似乎需要一个对象集合,其中包含:

图标的图像 firstTextView的字符串 secondTextView的字符串 您可以构建一个小片段来创建一个用于测试的预填充对象数组

public class YourObject {
    private Bitmap icon;
    private String text1;
    private String text2;

    public YourObject(Bitmap icon, String text1, String text2) {
        this.icon = icon;
        this.text1 = text1;
        this.text2 = text2;
    }

    // GETTERS AND SETTERS
}
然后创建它们的集合

    List<YourObject> data = new ArrayList<>();
    for (int z = 0; z < 5; z++) {
        YourObject yourObject = new YourObject(yourIcon, "Text1: " + z, "Text2: " + z);
        data.add(yourObject);
    }

拥有此集合后,将其与对row1.xml的引用一起发送到适配器构造函数,然后按照指南填充行。

查看此链接,它将有所帮助

或者您需要创建适配器文件

公共类CustomBaseAdapter扩展了BaseAdapter{

Context context;
List<RowItem> rowItems;

public CustomBaseAdapter(Context context, List<RowItem> items) {
    this.context = context;
    this.rowItems = items;
}

/*private view holder class*/
private class ViewHolder {
    ImageView imageView;
    TextView txtTitle;
    //TextView txtDesc;
    ImageView imgarrow;
}

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder = null;

    LayoutInflater mInflater = (LayoutInflater)
        context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.list_item, null);
        holder = new ViewHolder();
        //holder.txtDesc = (TextView) convertView.findViewById(R.id.desc);
        holder.txtTitle = (TextView) convertView.findViewById(R.id.title);
        holder.imageView = (ImageView) convertView.findViewById(R.id.icon);
        holder.imgarrow=(ImageView)convertView.findViewById(R.id.arrow_icon);
        convertView.setTag(holder);
    }
    else {
        holder = (ViewHolder) convertView.getTag();
    }

    RowItem rowItem = (RowItem) getItem(position);

    //holder.txtDesc.setText(rowItem.getDesc());
    holder.txtTitle.setText(rowItem.getTitle());
    holder.imageView.setImageResource(rowItem.getImageId());
    holder.imgarrow.setImageResource(rowItem.getImg());

    return convertView;
}

@Override
public int getCount() {    
    return rowItems.size();
}

@Override
public Object getItem(int position) {
    return rowItems.get(position);
}

@Override
public long getItemId(int position) {
    return rowItems.indexOf(getItem(position));
}
}

主要活动

公共类MainActivity扩展活动实现了McClickListener{

public static final String[] titles = new String[] { "Krish",
    "John Cena", "Kane","Roman Reigns"};



public static final Integer[] images = { R.drawable.fourth,R.drawable.second,R.drawable.first,R.drawable.third};
public static final Integer[] imagearow = {R.drawable.arrow,R.drawable.arrow,R.drawable.arrow,R.drawable.arrow };

ListView listView;
List<RowItem> rowItems;


private ImageView btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_item_home);
    //list_travels=(ListView)findViewById(R.id.list_travels);



    btn=(ImageView)findViewById(R.id.btnaddhotels);
    btn.setOnClickListener(new OnClickListener() 
    {

        @Override
        public void onClick(View arg0) 
        {
            Intent i=new Intent(HomeScreen.this,Registerhotel_resorts.class);
            startActivity(i);

        }
    });


    rowItems = new ArrayList<RowItem>();
    for (int i = 0; i < titles.length; i++) {
        RowItem item = new RowItem(images[i], titles[i],imagearow[i]);
        rowItems.add(item);
    }

    listView = (ListView) findViewById(R.id.list_hotels);
    CustomBaseAdapter adapter = new CustomBaseAdapter(this, rowItems);
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(this);


}
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
        long id) {
        Toast toast = Toast.makeText(getApplicationContext(),
            "Item " + (position + 1) + ": " + rowItems.get(position),
            Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);
        toast.show();

        Intent i1=new Intent(HomeScreen.this,KrishnaParkResort.class);
        startActivity(i1);
    }

}

很高兴能帮助您..编码愉快
    List<YourObject> data = new ArrayList<>();
    for (int z = 0; z < 5; z++) {
        YourObject yourObject = new YourObject(yourIcon, "Text1: " + z, "Text2: " + z);
        data.add(yourObject);
    }
Context context;
List<RowItem> rowItems;

public CustomBaseAdapter(Context context, List<RowItem> items) {
    this.context = context;
    this.rowItems = items;
}

/*private view holder class*/
private class ViewHolder {
    ImageView imageView;
    TextView txtTitle;
    //TextView txtDesc;
    ImageView imgarrow;
}

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder = null;

    LayoutInflater mInflater = (LayoutInflater)
        context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.list_item, null);
        holder = new ViewHolder();
        //holder.txtDesc = (TextView) convertView.findViewById(R.id.desc);
        holder.txtTitle = (TextView) convertView.findViewById(R.id.title);
        holder.imageView = (ImageView) convertView.findViewById(R.id.icon);
        holder.imgarrow=(ImageView)convertView.findViewById(R.id.arrow_icon);
        convertView.setTag(holder);
    }
    else {
        holder = (ViewHolder) convertView.getTag();
    }

    RowItem rowItem = (RowItem) getItem(position);

    //holder.txtDesc.setText(rowItem.getDesc());
    holder.txtTitle.setText(rowItem.getTitle());
    holder.imageView.setImageResource(rowItem.getImageId());
    holder.imgarrow.setImageResource(rowItem.getImg());

    return convertView;
}

@Override
public int getCount() {    
    return rowItems.size();
}

@Override
public Object getItem(int position) {
    return rowItems.get(position);
}

@Override
public long getItemId(int position) {
    return rowItems.indexOf(getItem(position));
}
public static final String[] titles = new String[] { "Krish",
    "John Cena", "Kane","Roman Reigns"};



public static final Integer[] images = { R.drawable.fourth,R.drawable.second,R.drawable.first,R.drawable.third};
public static final Integer[] imagearow = {R.drawable.arrow,R.drawable.arrow,R.drawable.arrow,R.drawable.arrow };

ListView listView;
List<RowItem> rowItems;


private ImageView btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_item_home);
    //list_travels=(ListView)findViewById(R.id.list_travels);



    btn=(ImageView)findViewById(R.id.btnaddhotels);
    btn.setOnClickListener(new OnClickListener() 
    {

        @Override
        public void onClick(View arg0) 
        {
            Intent i=new Intent(HomeScreen.this,Registerhotel_resorts.class);
            startActivity(i);

        }
    });


    rowItems = new ArrayList<RowItem>();
    for (int i = 0; i < titles.length; i++) {
        RowItem item = new RowItem(images[i], titles[i],imagearow[i]);
        rowItems.add(item);
    }

    listView = (ListView) findViewById(R.id.list_hotels);
    CustomBaseAdapter adapter = new CustomBaseAdapter(this, rowItems);
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(this);


}
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
        long id) {
        Toast toast = Toast.makeText(getApplicationContext(),
            "Item " + (position + 1) + ": " + rowItems.get(position),
            Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);
        toast.show();

        Intent i1=new Intent(HomeScreen.this,KrishnaParkResort.class);
        startActivity(i1);
    }