2015-01-22 6 views
1

은 AsyncTask를 구현하는 방법 텍스트 뷰로 자원 ID를 필요로 나는이 조각 나는 선는 ArrayAdapter와는

listview = (ListView) ?????? findViewById(R.id.listviewget); 

에 작성하고 내가 onCreateView

에 넣어 경우
listview = (ListView) veiw.findViewById(R.id.listviewget); 
해야하는지

나는 오류 below.All 내가 활동에 확인하고이 서버에서 데이터 만 조각에없는 일을 가지고 있기 때문에 코드가 작동지고있어

01-22 21 : 59 : 32.850 : E/ArrayAdapter (32155) : TextView 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : FATAL EXCEPTION : 메인 01- 22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : java.lang.IllegalStateException : ArrayAdapter에서 리소스 ID 이 TextView 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : android에 있어야합니다. .Widget.ArrayAdapter.createViewFromResource (ArrayAdapter.java:386) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : android.widget.ArrayAdapter.getView (ArrayAdapter.java:362) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : android.widget.AbsListView.obtainView (AbsListView.java:2075) 01-22 21 : 59 : 32.890 : E/AndroidRuntim e (32155) : android.widget.ListView.makeAndAddView (ListView.java:2004) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : android.widget.ListView.fillDown (ListView. java : 856) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : android.widget.ListView.fillFromTop (ListView.java:916) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : android.widget.ListView.layoutChildren (ListView.java:1857) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : android.widget.AbsListView.onLayout (AbsListView.java : 1905) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : android.view.View.layout (View.java:11359) 01-22 21 : 59 : 32.890 : E/AndroidRuntime 32155) : 에서 android.view.ViewGroup.layout (ViewGroup.java:4531) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : 에서 android.widget.RelativeLayout.onLayout (RelativeLayout.java : 925) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : android.view.View.layout (View.java:11359) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155)) : at android.view.ViewGroup.layout (ViewGroup.java:4531) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : 에서 android.widget.FrameLayout.onLayout (FrameLayout.java:431)) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : android.view.View.layout (View.java:11359) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) :에android.view.ViewGroup.layout (ViewGroup.java:4531) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : android.support.v4.widget.DrawerLayout.onLayout (DrawerLayout.java :01-22 21 : 59 : 32.890 : E/AndroidRuntime) : at android.view.ViewGroup.layout (ViewGroup.java:4531) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : 에서 android.widget.FrameLayout.onLayout (FrameLayout.java:431)) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : android.view.View.layout (View.java:11359) 01-22 21:59:32.890 : E/AndroidRuntime (32155) : android.view.ViewGroup.layout (ViewGroup.java:4531) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : android.widget.LinearLayout .setChildFrame (LinearLayout.java:1628) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : android.widget.LinearLayout.layoutVertical (LinearLayout.java:1486) 01-22 21:59 : 32.890 : E/AndroidRuntime (32155) : android.widget.LinearLayout.onLayout (LinearLayout.java:1399) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : android.view.View. 레이아웃 (View.java:11359) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : android.view.ViewGroup.layout (ViewGroup.java:4531) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : android.widget.FrameLayout.onLayout (FrameLayout.java:431) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : android .view.View.layout (View.java:11359) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : android.view.ViewGroup.layout (ViewGroup.java:4531) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32,155) android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1665)에서 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32,155)에 로이드. view.ViewRootImpl.handleMessage (ViewRootImpl.java:2695) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : android.os.Handler.dispatchMessage (Handler.java:99)) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : 에서 android.os.Looper.loop (Looper.java:156) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : 에서 android.app.ActivityThread.main (ActivityThread.java:4987) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : 에서 java.lang.reflect.Method.invokeNative (Native Method) 01 -22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : 에서 java.lang.reflect.Method.invoke (Method.java:511) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : 에서 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:784) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : com.android.internal.os. ZygoteInit.main (접합자 (기본 방법) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (초기화) : 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : 에 dalvik.system.NativeStart.main 32,155) java.lang.ClassCastException가 :에 의해 발생 : 59 : 32.890 : android.widget.RelativeLayout가 에 android.widget.TextView 01-22 21 전송할 수없는 E/AndroidRuntime (32,155)에 android.widget .ArrayAdapter.createViewFromResource (ArrayAdapter.java:379) 01-22 21 : 59 : 32.890 : E/AndroidRuntime (32155) : ...39 개

public class MyLibrary extends Fragment { 
ListView listview; 
List<ParseObject> data; 
ProgressDialog mProgressDialog; 
ArrayAdapter<String> adapter; 


public MyLibrary() 
{ 

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    Parse.initialize(getActivity(), "ASD", "ASD"); 
    ParseUser.enableAutomaticUser(); 
    ParseACL defaultACL = new ParseACL(); 
    defaultACL.setPublicReadAccess(true); 
    ParseACL.setDefaultACL(defaultACL, true); 
    View view=inflater.inflate(R.layout.getnewlay,container, false); 
    new GetData().execute(); 
    return view; 
} 

private class GetData extends AsyncTask<Void, Void, Void> { 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     mProgressDialog = new ProgressDialog(getActivity()); 
     mProgressDialog.setTitle("Please wait"); 
     mProgressDialog.setMessage("Getting data..."); 
     mProgressDialog.setIndeterminate(false); 
     mProgressDialog.show(); 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     ParseQuery query = new ParseQuery("ASD"); 
     query.orderByDescending("_created_at"); 
     try { 
      data= query.find(); 


     } catch (ParseException e) { 

      e.printStackTrace(); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     listview = (ListView) ?????? findViewById(R.id.listviewget); 

     adapter = new ArrayAdapter<String>(getActivity(), 
       R.layout.getnewlay); 
     for (ParseObject name : data) { 
      adapter.add((String) name.get("name")); 
     } 
     listview.setAdapter(adapter); 
     mProgressDialog.dismiss(); 

    } 
} 

} 

답변

2

ArrayAdapter와는 텍스트 뷰에게로 자원 ID를 필요로

수단 R.layout.getnewlay 레이아웃은 텍스트 뷰를 포함하지만 RelativeLayout 그래서 당신은 또 다른 생성자를 텍스트 뷰에 대한 ID를 지정하고 사용하거나 내부 텍스트 뷰가 필요한 ArrayAdapter ID :

adapter = new ArrayAdapter<String>(getActivity(), 
       R.layout.getnewlay,R.id.textView_Id); 

또는 XML에서 RelativeLayout 레이아웃을 제거하고 루트보기로 TextView합니다

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"  
    ..... 
/> 
onPostExecute 방법에 조각 레이아웃에서보기에 액세스하는 방법

:

사용 getView 방법 :

listview = (ListView)getView().findViewById(R.id.listviewget); 
+1

오 마이 갓 !! 나는 textview로 레이아웃을 잊어 버렸고, 대신 주 레이아웃을 써 주셔서 고맙습니다. – Sultan

1

레이아웃 getnewlay를 확인하십시오. 이 레이아웃의 부모로서 만 텍스트 뷰 (선형 또는 상대 레이아웃과 같은 심지어 어떤 레이아웃)

을 가져야한다 그렇지 않으면 당신은 레이아웃 'getnewlay'와 같은 당신의 텍스트 뷰의 R.layout.getnewlay

1

패스 리소스 ID 대신 android.R.layout.simple_list_item_1를 넣을 수 있습니다

adapter = new ArrayAdapter<>(getActivity(), R.layout.getnewlay, R.id.textViewResourceId_in_getnewlay)