gpt4 book ai didi

java - 将 ImageButton 添加到 ListView

转载 作者:行者123 更新时间:2023-11-30 00:37:29 25 4
gpt4 key购买 nike

我正在尝试向我的 ListView 中的每一行添加一个 ImageButton(这是我通过 CustomAdapter 实现的)。每个按钮应该打开不同的 WebView。我似乎找不到任何教程来执行此操作,因此非常感谢任何建议/提示/链接。

编辑 1:

我的 ListView XML:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_x="15dp">

<ImageView
android:layout_width="30dp"
app:srcCompat="@drawable/a"
android:layout_marginLeft="12dp"
android:layout_marginStart="12dp"
android:id="@+id/local"
android:layout_height="30dp"
android:layout_alignBottom="@+id/versus"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />

<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/resultsiz"
android:textColor="@android:color/white"

android:textStyle="normal|bold"

android:gravity="center_vertical"
android:elevation="15dp"
android:layout_alignBaseline="@+id/resultsde"
android:layout_alignBottom="@+id/resultsde"
android:layout_alignRight="@+id/resultsde"
android:layout_alignEnd="@+id/resultsde"
android:layout_marginRight="61dp"
android:layout_marginEnd="61dp" />

<ImageView
android:layout_width="15dp"
app:srcCompat="@drawable/a"
android:id="@+id/versus"
android:layout_height="15dp"
android:layout_marginLeft="31dp"
android:layout_marginStart="31dp"
android:layout_alignBottom="@+id/visit"
android:layout_toRightOf="@+id/local"
android:layout_toEndOf="@+id/local" />

<ImageView
android:layout_width="30dp"
app:srcCompat="@drawable/a"
android:id="@+id/visit"
android:layout_height="30dp"
android:layout_marginLeft="19dp"
android:layout_marginStart="19dp"
android:layout_alignBottom="@+id/resultsiz"
android:layout_toRightOf="@+id/versus"
android:layout_toEndOf="@+id/versus" />

<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignLeft="@+id/local"
android:layout_alignStart="@+id/local"
android:id="@+id/dia"
android:textColor="@color/white"
android:textStyle="normal|bold"
android:textAllCaps="true" />

<TextView
android:text="TextView"
android:layout_height="wrap_content"
android:id="@+id/resultsde"
android:layout_marginRight="24dp"
android:layout_marginEnd="24dp"
android:textColor="@android:color/white"
android:layout_marginTop="19dp"
android:textStyle="normal|bold"
android:textAlignment="viewEnd"
android:gravity="end"
android:layout_width="70dp"
android:layout_below="@+id/dia"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />

<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/local"
android:layout_toRightOf="@+id/local"
android:layout_toEndOf="@+id/local"
android:layout_marginTop="155dp"
android:id="@+id/stats" />
</RelativeLayout>

还有我的 CustomAdapter:

protected void onPostExecute(Void aVoid) {
CustomAdapter customAdapter = new CustomAdapter();
lista.setAdapter(customAdapter);
}
class CustomAdapter extends BaseAdapter{


@Override
public int getCount() {
return resultsizq.length;
}

@Override
public Object getItem(int position) {
return null;
}

@Override
public long getItemId(int position) {
return 0;
}

@Override
public View getView(int position, View view, ViewGroup parent) {
view = getLayoutInflater().inflate(R.layout.customlayout,null);





ImageView versus = (ImageView)view.findViewById(R.id.versus);
ImageView local = (ImageView)view.findViewById(R.id.local);
ImageView visit = (ImageView)view.findViewById(R.id.visit);

TextView dia= (TextView)view.findViewById(R.id.dia);
TextView resultsiz= (TextView)view.findViewById(R.id.resultsiz);
TextView resultsde= (TextView)view.findViewById(R.id.resultsde);



dia.setText(di[position]);
resultsiz.setText(resultsizq[position]);
resultsde.setText(resultsder[position]);
versus.setImageResource(versu[position]);
local.setImageResource(loc[position]);
visit.setImageResource(vis[position]);




if ((position+1)%4==0){
view.setPadding(0,0,0,150);

}

if ((position)%4==0){
view.setPadding(0,150,0,0);

}


return view;
}}

最佳答案

getView 方法中,您应该根据给定的位置将onClick 函数分配给Button。也许,你应该获取位于位置的item,根据这个item的属性生成一些url,让这个url在onClick函数中打开。

除此之外,我还有 3 条改进代码的建议:

  1. 尝试使用 RecyclerView 而不是 ListView
  2. 即使您使用 ListView,也请查看 View Holder 模式。 This是一个很好的起点。
  3. 考虑使用 Butterknifewhich增加代码的可读性。如果我是你,我会将该项目作为属性保留在 View 持有者对象中,该对象具有一个用 @OnClick(R.id.stats) 注释的函数,以便它打开首选 WebView 相应地。

希望这些对您有所帮助。

关于java - 将 ImageButton 添加到 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43172825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com