【问题标题】:How can I use getter and setter using class library in Android如何在 Android 中使用类库中的 getter 和 setter
【发布时间】:2021-05-05 06:03:34
【问题描述】:

我已经使用 RecyclerView 显示了一个记录列表。

列表记录是 1 到 100 个数字。现在我想显示联系人类中的姓名列表。

所以我想创建一个联系人类,其中有一个变量名称(字符串)并具有 getter 和 setter 方法。

现在如何在类中设置名称以及如何从联系人类中获取名称?

我不知道如何实现。

现在我有一个字符串类型的 ArrayList 在其中添加了从 1 到 100 的数字,并在 RecyclerView 中填充这些数字。

现在我想生成一个具有名称的列表对象。我该怎么做?

适配器代码:

    public class AdapterData extends RecyclerView.Adapter<AdapterData.DummyHolder> {

    private LayoutInflater layoutInflater;
    private ArrayList<String> mItems = new ArrayList<>();
    public Context ThisContext;

    public AdapterData(Context context)
    {
        layoutInflater = LayoutInflater.from(context);
        mItems = generateValues();
        ThisContext = context;
    }

    public static ArrayList<String> generateValues(){
        ArrayList<String> Dummy = new ArrayList<>();
        for(int i=1; i<100; i++)
        {
            Dummy.add("Item"+i);
            Log.d("MTS", String.valueOf(i));
        }
        return Dummy;
    }

    @Override
    public DummyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view= layoutInflater.inflate(R.layout.row_layout,parent,false);
        DummyHolder holder=new DummyHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(DummyHolder holder, int position) {
        holder.txt_name.setText(mItems.get(position));
        Log.d("MAN=",mItems.get(position));
    }

    @Override
    public int getItemCount() {
        return 100;
    }

    public static class DummyHolder extends RecyclerView.ViewHolder{

        TextView txt_name;

        public DummyHolder(View itemView) {
            super(itemView);
            txt_name = (TextView) itemView.findViewById(R.id.tx_name);
        }
    }
}

行代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/tx_name"
        android:hint="Hello"/>

</LinearLayout>

主要活动 XML :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.hogwarts.harrypotter.recyclerdemo.MainActivity">

    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/rv_list">

    </android.support.v7.widget.RecyclerView>
</RelativeLayout>

MainActivity 代码:

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    recyclerView = (RecyclerView) findViewById(R.id.rv_list);
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(linearLayoutManager);
    recyclerView.setAdapter(new AdapterData(this));
}

【问题讨论】:

    标签: java android adapter android-recyclerview


    【解决方案1】:

    首先创建一个类Contacts。要快速创建 getter 和 setter 方法(例如,如果您有很多变量),只需右键单击字符串 -> 生成 -> Getters 和 Setters

    public class Contacts {
        String name;
    
      public String getName() {
        return name;
      }
    
      public void setName(String name) {
        this.name = name;
      }
    
    }
    

    您可以随时创建List&lt;Contacts&gt; 并填充它

    List<Contacts> data = new ArrayList<>();
    for(int i = 0; i < 10; i++){
      Contacts contacts = new Contacts();
      contacts.setName("name_" + i);
    
      data.add(contacts);
    }
    

    检索数据是相同的过程

    // in case of a recyclerview you would have pass the List to your adapter in its constructor
    
    //in construcor just store the list into a variable
    this.data = data
    
    //in onBindViewHolder you retrieve the data from that list
    
    @Override
    public void onBindViewHolder(final MyViewHolder holder, int position) {
        Contacts currentContact = data.get(position);
        String name = current.get(title);
    }
    

    【讨论】:

      猜你喜欢
      • 2013-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-13
      • 1970-01-01
      • 2023-03-09
      • 2021-09-21
      • 2019-11-26
      相关资源
      最近更新 更多