[英]Add simple navigation to Items in ListView Android studio
我已经在寻找各种导航解决方案,但我的应用程序都不适合。
我有使用数组适配器在 ListView 中显示的 Parcelable 对象。 当我单击项目时,它会转到具有另一个布局的另一个活动,专用于显示带有图片库、标题等的单个项目。因此,我想添加简单的导航,如图所示,如果存在,则移动到下一个项目,上一个项目如果存在并返回列表视图。
这是一些代码
public class SingleItem extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_single_item);
Intent intent = getIntent();
Single singleItem = intent.getParcelableExtra("Single");
String id = singleItem.getId();
Integer position = singleItem.getPosition();
String title = singleItem.getTitle();
String subtitle = singleItem.getSubtitle();
String text = singleItem.getText();
int[] image = singleItem.getImage();
TextView titleTV = findViewById(R.id.singleItemTitle);
LinearLayout gallery = findViewById(R.id.gallery);
LayoutInflater inflater = LayoutInflater.from(this);
for (int i = 0; i < image.length; i++) {
View view = inflater.inflate(R.layout.single_item_gallery, gallery, false);
ImageView imageView = view.findViewById(R.id.singleItemGalleryImage);
imageView.setImageResource(image[i]);
gallery.addView(view);
}
TextView descTV = findViewById(R.id.singleItemDesc);
titleTV.setText(title);
descTV.setText(text);
}
}
val listViewAdapter = ItemListAdapter(this, R.layout.adapter_view_layout, itemList)
listView.adapter = listViewAdapter
listView.setOnItemClickListener { _: AdapterView<*>, _: View, position : Int, _: Long ->
val intent = Intent(this, SingleItem::class.java)
intent.putExtra("Single", itemList[position])
startActivity(intent)
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@+id/singleItemTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/singleItemTitle">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="220dp"
android:paddingStart="10dp"
android:scrollbars="none"
android:paddingEnd="10dp">
<LinearLayout
android:id="@+id/gallery"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal"/>
</HorizontalScrollView>
<TextView
android:id="@+id/singleItemDesc"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
</RelativeLayout>
我想把导航放在上面的布局中。
列表显示:
单项导航示例:
您好,欢迎来到 StackOverflow (SO)!
作为一个新手,您可能不知道,但是,在 SO 上,您应该清楚地定义您的问题。 我没有看到直接的问题。 我推断您需要一组指南来使用 Android 实现您的图库视图,并能够使用按钮在它们之间滑动(如果我没记错的话)。
你的方法理论上是可以的。 剩下要做的就是从 SingleItem Activity 中获取对 Next/Previous 按钮的引用,并在按下 Next/Previous 按钮时手动滚动 HorizontalScrollView object。
但是,您的代码在以下代码段中存在重大缺陷。
for (int i = 0; i < image.length; i++) {
View view = inflater.inflate(R.layout.single_item_gallery, gallery, false);
ImageView imageView = view.findViewById(R.id.singleItemGalleryImage);
imageView.setImageResource(image[i]);
gallery.addView(view);
}
这是你不应该做的事情。 相反,请使用RecyclerView ,它只会在需要显示时加载您的图像。 访问详细视图 (SingleItem) 后,您实际上是在创建所有图像视图。
您当前的方法可能适用于一些图像,但不建议用于很多图像,因为它可能
一旦你用 RecyclerView 实现了这个,试一试,看看它是否有效。 如果您仍然有问题,请不要犹豫!
干杯!
我看到两个选项:
onCreate
中通过 ID 找到项目并加载它。 因此,您可以从 SingleItem 活动中打开更多 SingleItem 活动,只需将下一个或上一个项目 ID 传递给它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.