0

我是一个 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() 时应用程序崩溃。我已经将该类单独放在另一个文件中,以便它公开。

希望我对我的问题足够清楚。非常欢迎执行此任务的任何其他简化方法。

4

0 回答 0