我是Android新手,我对ListView有疑问。我在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(“标签”,“内容”)时,应用程序崩溃,当我不使用时,我可以转到下一个活动。 在下一个活动中,我已经执行检查以查看Extra内容是否为null,因此这不是问题。 这是我在下一个活动中执行的错误处理 -
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()时,我无法理解应用程序崩溃的原因。我把那个类分别放在另一个文件中,以便公开。
希望我对我的问题足够清楚。非常欢迎任何其他简化方法来执行此任务。