如何在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);
}
这是应用程序的最终输出。
输出: