2014-08-31 57 views
0

我的活动有一个列表视图,它填充了来自我的parse.com数据库的数据,并且列表没有被填充没有问题。它显示一个名称列表。我想将列表中所选项目的名称存储在一个变量中,并传递给另一个活动。列表被填充,但选择错误崩溃应用程序。我的继承人活动`当点击列表视图选项时出错

import java.util.List; 

import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.ActionBarActivity; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

import com.parse.ParseObject; 
import com.parse.ParseQuery; 
import com.parse.ParseQueryAdapter; 
import com.parse.ParseQueryAdapter.OnQueryLoadListener; 

public class ResterauntList extends ActionBarActivity { 
    String mValue; 
    ArrayAdapter<String> adapter; 
    ProgressDialog mProgressDialog; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_resteraunt_list); 

     Bundle bdl = getIntent().getExtras(); 
     mValue = bdl.getString("Value"); 
     setContentView(R.layout.activity_resteraunt_list); 

     populateList(mValue); 
    } 

    private void populateList(final String Value) { 
     ParseQueryAdapter.QueryFactory<ParseObject> factory = new ParseQueryAdapter.QueryFactory<ParseObject>() { 

      @Override 
      @SuppressWarnings({ "unchecked", "rawtypes" }) 
      public ParseQuery create() { 
       ParseQuery query = new ParseQuery("Restraunt"); 
       query.whereEqualTo("Location", Value); 
       return query; 
      } 
     }; 
     ParseQueryAdapter<ParseObject> adapter = new ParseQueryAdapter<ParseObject>(
       this, factory); 
     adapter.setTextKey("Name"); 
     adapter.addOnQueryLoadListener(new OnQueryLoadListener<ParseObject>() { 

      public void onLoading() { 
       mProgressDialog = new ProgressDialog(ResterauntList.this); 
       mProgressDialog.setTitle(Value + " Restraunts Search"); 
       mProgressDialog.setMessage("Loading..."); 
       mProgressDialog.setIndeterminate(false); 
       mProgressDialog.show(); 
      } 

      public void onLoaded(List<ParseObject> objects, Exception e) { 
       mProgressDialog.dismiss(); 
      } 
     }); 

     final ListView listView = (ListView) findViewById(R.id.restListView); 
     listView.setAdapter(adapter); 
     listView.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       String name = (String) listView.getItemAtPosition(position); 
       Intent i = new Intent(getApplicationContext(), 
         SingleRestraunt.class); 
       i.putExtra("restName", name); 
       startActivity(i); 

      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.resteraunt_list, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
}` 

我对这个活动XML如下

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.gastronomaapp.ResterauntList" > 

    <ListView 
     android:id="@+id/restListView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:clickable="true" > 
    </ListView> 

</RelativeLayout> 

给我似乎不断收到此错误

08-31 03:00:42.490: E/AndroidRuntime(2003): Process: com.example.gastronomaapp, PID: 2003 
08-31 03:00:42.490: E/AndroidRuntime(2003): java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.TextView 

经过许多解决方案,并试图几乎所有我能找到线上。绝对不知道什么是错的。将不胜感激 编辑 - 做了一个堆栈跟踪,告诉我错误是在这一行。还挺有这样的直觉

String name = (String) listView.getItemAtPosition(position); 
       Intent i = new Intent(getApplicationContext(), 
         SingleRestraunt.class); 
+0

看堆栈跟踪并找到发生错误的行。 – 2014-08-31 07:19:45

+0

使用错误行进行编辑。谢谢 – newbie 2014-08-31 07:25:34

+0

请仔细看看堆栈跟踪。您发布的代码不可能导致您发布的错误。 – 2014-08-31 07:28:44

回答

1

的错误是以下行

String name = (String) listView.getItemAtPosition(position); 

您正在使用

INSEAD的

ArrayAdapter<String> adapter 

ParseQueryAdapter<ParseObject> adapter 

,所以你不能把它转换成字符串。尝试使用下面的代码

ParseObject object= (ParseObject) listView.getItemAtPosition(position); 

然后检查属性的parseObject你putExtra需要什么

+0

错误停止了,但是它打印出类似[email protected]的东西。我是否在我的分析对象处理中出错? – newbie 2014-08-31 07:42:34

相关问题