【问题标题】:Print only the "name" atribute in the listview仅打印列表视图中的“名称”属性
【发布时间】:2016-09-03 05:56:46
【问题描述】:

我正在开发一个 android 应用程序,其中第一个屏幕是一个列表视图,它应该只是显示插入到应用程序中的系列的名称,目前它正在打印我拥有的关于该系列的所有信息,我想要要知道:

  • 如何在第一个屏幕上仅打印系列名称。
  • 当我在第一个屏幕上单击一个系列时,打印系列的所有信息。

MainActivity:

    package com.example.bugdroid.trabalhoapp1;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.example.bugdroid.trabalhoapp1.modelo.Series;
import com.example.bugdroid.trabalhoapp1.modelo.Serie;

public class MainActivity extends AppCompatActivity {

    private ListView lv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        lv = (ListView) findViewById(R.id.lista_series);

        Series Series = new Series();

        Serie exemplo = new Serie ("Thrones", "açao", 50, 10, 1900 );
        Series.getLista().add(exemplo);

        exemplo = new Serie("CSI", "Policial", 30, 20, 4);
        Series.getLista().add(exemplo);

        exemplo = new Serie("Flash", "aventura", 30, 20, 4);
        Series.getLista().add(exemplo);

        exemplo = new Serie("Vikings", "Historia", 3, 2, 4);
        Series.getLista().add(exemplo);

        ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, Series.getLista());

        lv.setAdapter(adapter);
    }

Serie.java

    package com.example.bugdroid.trabalhoapp1.modelo;

/**
 * Created by BugDroid on 06/05/2016.
 */
public class Serie {

    private String nome;
    private String descricao;
    private int nEpisodios;
    private int nTemporadas;
    private int dataEstreia;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public int getnEpisodios() {
        return nEpisodios;
    }

    public void setnEpisodios(int nEpisodios) {
        this.nEpisodios = nEpisodios;
    }

    public int getnTemporadas() {
        return nTemporadas;
    }

    public void setnTemporadas(int nTemporadas) {
        this.nTemporadas = nTemporadas;
    }

    public int getDataEstreia() {
        return dataEstreia;
    }

    public void setDataEstreia(int dataEstreia) {
        this.dataEstreia = dataEstreia;
    }

    public Serie () {
        this.nome = "";
        this.descricao = "";
        this.nEpisodios = 0;
        this.nTemporadas = 0;
        this.dataEstreia = 0;
    }

    public Serie(String nome, String c, int p, int h, int g){
        this.nome = nome;
        this.descricao = c;
        this.nEpisodios = p;
        this.nTemporadas = h;
        this.dataEstreia = g;
    }

    public String toString() {
        String res = "A serie" + this.nome + " tem a seguinte descricao " + this.descricao + "com" + this.nEpisodios + "episodios e " + this.nTemporadas + "estreou em" + this.dataEstreia +")";
        return res;
    }
}

Series.java

    package com.example.bugdroid.trabalhoapp1.modelo;

import java.util.ArrayList;

/**
 * Created by BugDroid on 07/05/2016.
 */
public class Series {

    private ArrayList<Serie> lista;

    public ArrayList<Serie> getLista(){
        return this.lista;
    }

    public void setLista(ArrayList<Serie> l){
        this.lista = l;
    }

    public Series(){
        this.lista = new ArrayList<Serie>();
    }

    public Series(ArrayList<Serie> l){
        this.lista = new ArrayList<Serie>(l);
    }
}

【问题讨论】:

  • 你不应该需要 Series 的类,因为它只是一个 Arraylist&lt;Serie&gt;

标签: java android listview android-studio


【解决方案1】:

您必须更改 toString 方法,因为 cricket_007 告诉您这是最简单的方法。 打印您拥有的所有信息 Serie 以实施 Serializable

lv.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> arg0, View view, int arg2,long itemID) {

       Intent in = new Intent(getApplicationContext(),Detail.class);
       in.putExtra("data", Series.getLista().get(itemID));
       startActivity(in);
    }
});

在细节课上你必须

getIntent().getSerializableExtra("data");

【讨论】:

  • 您好,谢谢!我是这方面的新手,我应该创建一个类“Serializable”然后让 Serie 实现它吗?
  • 你的 Serie 类必须像那样隐含 Serializable 接口
  • 什么是 Detail 类,我应该把你提到的代码放在哪里?这听起来应该很无聊,sry :) 谢谢。
  • 你必须把 getIntent().getSerializableExtra("data");在您要解析所有信息的活动中。它将返回一个 Serie 对象
  • 还有 lv.setOnItem.CliclListener 吗?关于新活动?
【解决方案2】:

只需更改toString 方法。

public String toString() {
    return this.nome;
}

或者,您可以为数据定义自定义 ArrayAdapter 和布局。

要在点击时打印所有信息,您需要在 ListView 上添加一个OnItemClickListener。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 2020-10-30
    • 2015-10-23
    • 1970-01-01
    相关资源
    最近更新 更多