📜  如何在Android中实现项目点击界面?

📅  最后修改于: 2022-05-13 01:54:42.436000             🧑  作者: Mango

如何在Android中实现项目点击界面?

当我们单击应用程序中的某个项目时,它要么提供一些信息,要么将用户重定向到任何其他页面。在本文中,我们将学习如何在 android 应用程序中实现 Item Click 界面。

我们将在本文中构建什么?

在本文中,我们将使用包含许多项目的回收站视图。使用 CardView 制作一个项目,该项目进一步由 TextView 组成,用于向用户显示所需的文本。当用户单击任何项目时,它会显示该项目的位置和值。请注意,我们将用Java语言实现这个项目。这是我们将要构建的应用程序的示例视频。

分步实施

步骤 1:创建一个新项目

  • 打开一个新项目。
  • 我们将使用Java语言开发 Empty Activity。保持所有其他选项不变。
  • 您可以在方便时更改项目的名称。
  • 将有两个名为 activity_main.xml 和 MainActivity 的默认文件。Java

如果您不知道如何在 Android Studio 中创建新项目,可以参考如何在 Android Studio 中创建/启动新项目?

第 2 步:使用 XML 文件

导航到 app > res > layout > activity_main.xml 并将以下代码添加到该文件。下面是 activity_main.xml 文件的代码。

XML


  
    
  


XML


  
    
  


Java
package com.example.itemclickinterface;
  
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
  
import android.os.Bundle;
import android.widget.Toast;
  
import java.util.ArrayList;
  
public class MainActivity extends AppCompatActivity {
  
    // initialize variable
    RecyclerView recyclerView;
    ArrayList arrayList=new ArrayList<>();
    MainAdapter adapter;
    ItemClickListener itemClickListener;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        // assign variable
        recyclerView=findViewById(R.id.recycler_view);
  
        // use for loop
        for(int i=0;i<15;i++)
        {
            // add values in array list
            arrayList.add("Address "+i);
        }
        
        // Initialize listener
        itemClickListener=new ItemClickListener() {
            @Override
            public void onClick(int position, String value) {
                // Display toast
                Toast.makeText(getApplicationContext(),"Position : "
                +position +" || Value : "+value,Toast.LENGTH_SHORT).show();
            }
        };
  
        // set layout manager
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        // Initialize adapter
        adapter=new MainAdapter(arrayList,itemClickListener);
        // set adapter
        recyclerView.setAdapter(adapter);
  
    }
}


Java
package com.example.itemclickinterface;
  
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
  
import androidx.annotation.NonNull;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView;
  
import java.util.ArrayList;
  
public class MainAdapter extends RecyclerView.Adapter {
       // initialize variables
    ArrayList arrayList;
    ItemClickListener itemClickListener;
    int selectedPosition=-1;
  
    // create constructor
    public MainAdapter(ArrayList arrayList,ItemClickListener itemClickListener)
    {
        this.arrayList=arrayList;
        this.itemClickListener=itemClickListener;
    }
  
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        // Initialize view
        View view= LayoutInflater.from(parent.getContext())
                .inflate(R.layout.item_main,parent,false);
        // return holder
        return new ViewHolder(view);
    }
  
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
  
        // set value on text view
        holder.textView.setText(arrayList.get(position));
  
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // get adapter position
                int position=holder.getAdapterPosition();
                // call listener
                itemClickListener.onClick(position,arrayList.get(position));
                // update position
                selectedPosition=position;
                // notify
                notifyDataSetChanged();
            }
        });
  
        // check conditions
        if(selectedPosition==position)
        {
            // When current position is equal 
             // to selected position
            // set black background color
            holder.cardView.setCardBackgroundColor(Color.parseColor("#000000"));
            // set white text color
            holder.textView.setTextColor(Color.parseColor("#FFFFFF"));
  
        }
        else
        {
            // when current position is different
            // set white background
            holder.cardView.setCardBackgroundColor(Color.parseColor("#FFFFFF"));
            // set black text color
            holder.textView.setTextColor(Color.parseColor("#000000"));
  
        }
    }
  
    @Override
    public int getItemCount() {
        // return array list size
        return arrayList.size();
    }
  
    public class ViewHolder extends RecyclerView.ViewHolder {
        // initialize variable
        CardView cardView;
        TextView textView;
  
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            // assign variable
            cardView=itemView.findViewById(R.id.card_view);
            textView=itemView.findViewById(R.id.text_View);
        }
    }
}


Java
package com.example.itemclickinterface;
  
public interface ItemClickListener {
    void onClick(int position,String value);
}


按照路径 app > res > 布局 > 右键单击 > 新建 > 布局资源文件并创建一个名为 item_main.xml 的新文件。在 item_main.xml 文件中使用以下代码 -

XML



  
    
  

第 3 步:使用Java文件

转到 MainActivity。 Java文件并参考以下代码。下面是 MainActivity 的代码。 Java文件。代码中添加了注释以更详细地理解代码。

Java

package com.example.itemclickinterface;
  
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
  
import android.os.Bundle;
import android.widget.Toast;
  
import java.util.ArrayList;
  
public class MainActivity extends AppCompatActivity {
  
    // initialize variable
    RecyclerView recyclerView;
    ArrayList arrayList=new ArrayList<>();
    MainAdapter adapter;
    ItemClickListener itemClickListener;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        // assign variable
        recyclerView=findViewById(R.id.recycler_view);
  
        // use for loop
        for(int i=0;i<15;i++)
        {
            // add values in array list
            arrayList.add("Address "+i);
        }
        
        // Initialize listener
        itemClickListener=new ItemClickListener() {
            @Override
            public void onClick(int position, String value) {
                // Display toast
                Toast.makeText(getApplicationContext(),"Position : "
                +position +" || Value : "+value,Toast.LENGTH_SHORT).show();
            }
        };
  
        // set layout manager
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        // Initialize adapter
        adapter=new MainAdapter(arrayList,itemClickListener);
        // set adapter
        recyclerView.setAdapter(adapter);
  
    }
}

按照路径 app > Java > com.example.multiple_item_delete > 右键单击 > new > Java类并创建一个名为 MainAdapter 的新文件。Java在 MainAdapter 中使用以下代码。 Java文件——

Java

package com.example.itemclickinterface;
  
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
  
import androidx.annotation.NonNull;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView;
  
import java.util.ArrayList;
  
public class MainAdapter extends RecyclerView.Adapter {
       // initialize variables
    ArrayList arrayList;
    ItemClickListener itemClickListener;
    int selectedPosition=-1;
  
    // create constructor
    public MainAdapter(ArrayList arrayList,ItemClickListener itemClickListener)
    {
        this.arrayList=arrayList;
        this.itemClickListener=itemClickListener;
    }
  
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        // Initialize view
        View view= LayoutInflater.from(parent.getContext())
                .inflate(R.layout.item_main,parent,false);
        // return holder
        return new ViewHolder(view);
    }
  
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
  
        // set value on text view
        holder.textView.setText(arrayList.get(position));
  
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // get adapter position
                int position=holder.getAdapterPosition();
                // call listener
                itemClickListener.onClick(position,arrayList.get(position));
                // update position
                selectedPosition=position;
                // notify
                notifyDataSetChanged();
            }
        });
  
        // check conditions
        if(selectedPosition==position)
        {
            // When current position is equal 
             // to selected position
            // set black background color
            holder.cardView.setCardBackgroundColor(Color.parseColor("#000000"));
            // set white text color
            holder.textView.setTextColor(Color.parseColor("#FFFFFF"));
  
        }
        else
        {
            // when current position is different
            // set white background
            holder.cardView.setCardBackgroundColor(Color.parseColor("#FFFFFF"));
            // set black text color
            holder.textView.setTextColor(Color.parseColor("#000000"));
  
        }
    }
  
    @Override
    public int getItemCount() {
        // return array list size
        return arrayList.size();
    }
  
    public class ViewHolder extends RecyclerView.ViewHolder {
        // initialize variable
        CardView cardView;
        TextView textView;
  
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            // assign variable
            cardView=itemView.findViewById(R.id.card_view);
            textView=itemView.findViewById(R.id.text_View);
        }
    }
}

按照路径 app > Java > com.example.multiple_item_delete > 右键单击 > new > interface 并创建一个名为 ItemClickListener 的新文件。Java在 MainAdapter 中使用以下代码。 Java文件——

Java

package com.example.itemclickinterface;
  
public interface ItemClickListener {
    void onClick(int position,String value);
}

这是应用程序的最终输出。

输出: