putExtra在ListView中的onClickListener中

时间:2013-07-15 15:29:36

标签: android android-listview

我是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()时,我无法理解应用程序崩溃的原因。我把那个类分别放在另一个文件中,以便公开。

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

0 个答案:

没有答案