gpt4 book ai didi

Android - 如何编译一个里面有其他 Activity 的类

转载 作者:行者123 更新时间:2023-11-29 22:26:09 25 4
gpt4 key购买 nike

我有一个 ExpandableListView,它有很多 child ,我会为每个 child 开始一项 Activity 。有人告诉我要创建一个独特的类(class),让每个 child 都参与其中。是否可以?如何?在我的项目中,我有一个 Child.class、一个 Group.class、一个 MyExpandableListView.class、一个 XmlHandler.class 和主要 Activity 。我从 res/raw 文件夹中的 xml 文件中获取 ExpandableList 的名称。我希望有人能帮助我。谢谢。

最佳答案

如果 ExpandableListView 的子点击事件触发的 Activity 相似(我的意思是只是它们显示的数据不同),那么您有一个 Activity 就足够了,并使其成为内容基于 ExpandableListView 的选定(单击)子项的动态。

让我们将您的新 Activity 称为Details
如果您的主要 Activity 没有扩展 ExpandableListActivity,但您有一个类型为 MyExpandableListView myExpandableListView 的成员,您应该在其上设置 `OnChildClickListener:

final ExpandableListView myExpandableListView = getExpandableListView();
myExpandableListView.setOnChildClickListener(new OnChildClickListener()
{
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id)
{
final Child selectedChild = groups.get(groupPosition)
.getChildren().get(childPosition);
final Intent intent = new Intent(testactivity.this, Details.class);
intent.putExtra("selectedChild", selectedChild);
startActivity(intent);
return true;
}
});

如果您的主要 Activity 扩展 ExpandableListActivity,要调用 Detail Activity ,您需要覆盖 ExpandableListActivity 的 onChildClick 事件:

@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id)
{
final Child selectedChild = groups.get(groupPosition)
.getChildren().get(childPosition);
final Intent intent = new Intent(this, Details.class);
intent.putExtra("selectedChild", selectedChild);
startActivity(intent);
return true;
}

您通过 putExtra 方法将被点击的 child 的值作为附加项添加到 Details Activity 的 Intent 中,然后才开始该 Activity 。

Details Activity 中,您可以使用getSerializableExtra 方法(为此,您的 Child 类必须实现 java.io.Serializable!)。
Details.java:

public class Details extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.details);

final Intent intent = getIntent();
if (intent.hasExtra("selectedChild"))
{
final Child selectedChild = (Child)intent.
getSerializableExtra("selectedChild");
if (selectedChild != null)
{
((TextView)findViewById(R.id.nameText)).
setText(selectedChild.getName());
((ImageView)findViewById(R.id.image)).setImageResource(getResources().
getIdentifier(selectedChild.getImage(), "drawable", "com.test.com"));
}
}
}
}

您的Details Activity 的布局应包含文本和图像
详细信息.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="100dip"
android:orientation="vertical">
<TextView android:id="@+id/nameText"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:paddingLeft="10dip" android:textColor="@android:color/white"
android:textSize="30dip" android:gravity="center_vertical|center_horizontal" />
<ImageView android:id="@+id/image"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:scaleType="fitCenter" android:layout_below="@id/nameText" />
</RelativeLayout>

这样您就可以实现,当您单击 ExpandableListActivity 的子项时,您将启动一个新 Activity (Details),其中所选的 Child 的图像和文本显示。

如果您将更多信息放入您的 Child 类(或从哪里获取更多数据的 url),您可能会变得更复杂。

关于Android - 如何编译一个里面有其他 Activity 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5900947/

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