我是一个 Android 新手,我有一个关于 ListView 的问题。我在 ListView 的一行中有很多元素,我希望它们可以单独点击并显示不同的活动。
这是我的列表视图-
<ListView
android:id="@+id/mainContentList"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:cacheColorHint="#00000000"
android:dividerHeight="15dp"
android:divider="#00000000"
android:scrollbarStyle="outsideInset"
android:paddingRight="10dp"
android:paddingLeft="10dp"
/>
这是 ListView 的单行 -
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/shadow"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/lightGrey"
android:layout_gravity="center_horizontal"
android:orientation="vertical"
>
<!-- Add padding=10dp for every layout with text. -->
<LinearLayout
android:id="@+id/singlePageLink"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:clickable="true"
>
<RelativeLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
style="@style/mainContentList"
>
<ImageView
android:id="@+id/profilePic"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:src="@drawable/ic_launcher"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:padding="2dp"
android:contentDescription="@string/imgDesc"
/>
<TextView
android:id="@+id/author"
android:layout_width="fill_parent"
android:layout_height="26dp"
android:layout_toRightOf="@id/profilePic"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:gravity="center_vertical"
/>
<TextView
android:id="@+id/status"
android:layout_width="fill_parent"
android:layout_height="26dp"
android:layout_toRightOf="@id/profilePic"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_below="@id/author"
android:gravity="center_vertical"
android:textSize="14sp"
/>
</RelativeLayout>
<View
android:layout_width="fill_parent"
android:layout_height="@dimen/lineThickness"
style="@style/horizontalLine"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
style="@style/mainContentList"
>
<TextView
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal|center_vertical"
/>
<TextView
android:id="@+id/time"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="15sp"
android:gravity="right"
/>
<TextView
android:id="@+id/message"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="15sp"
android:visibility="gone"
/>
</LinearLayout>
</LinearLayout>
<View
android:layout_width="fill_parent"
android:layout_height="@dimen/lineThickness"
style="@style/horizontalLine"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/lightGrey"
android:layout_gravity="center_horizontal"
android:orientation="vertical"
android:clickable="true"
>
<ImageView
android:id="@+id/notesLink"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@null"
android:src="@drawable/ic_launcher"
android:clickable="true"
/>
</LinearLayout>
</LinearLayout>
我使用了 BaseAdapter 来填充 listView。
public class updateContentAdapter extends BaseAdapter{
//I've implemented updateContentAdapter() constructor, getCount, getItem, getItemId.
//This is getView()
public View getView(int index, View view, ViewGroup parent){
LinearLayout spl=(LinearLayout)view.findViewById(R.id.singlePageLink);
spl.setOnClickListener(new OnClickListener(){
public void onClick(View view){
try{
Intent intent=new Intent(view.getContext(),Class.forName("com.example.justtopics."+(String)view.findViewById(R.id.title).getTag()));
//This line creates the problem.
intent.putExtra("Tag","Content");
//If This line is removed, I am able to go the next activity.
view.getContext().startActivity(intent);
}catch(Exception e){
Log.d("Error","id:singlePageLink not found.");
}
}
});
return view;
}
}
当我使用 intent.putExtra("Tag","Content") 时,应用程序崩溃,而当我不使用时,我可以进入下一个 Activity。在下一个活动中,我执行了检查额外内容是否为空,所以这不是问题。这是我在下一个活动中执行的错误处理 -
Bundle obj = getIntent().getExtras();
if (obj != null) {
Toast.makeText(getApplicationContext(), "Success!", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(getApplicationContext(), "No data!", Toast.LENGTH_SHORT).show();
}
我的主要问题是我无法理解为什么当我在 updateContentAdapter 类中使用 putExtras() 时应用程序崩溃。我已经将该类单独放在另一个文件中,以便它公开。
希望我对我的问题足够清楚。非常欢迎执行此任务的任何其他简化方法。