0

arraylist에서 데이터를 취하는 listview 및 사용자 정의 배열 어댑터를 사용하여 활동을 실행하려고하면 응용 프로그램이 강제 종료됩니다. 여기 Android : 맞춤 배열 어댑터에 문제가 발생했습니다. Force Close

public class TopAreaFeed extends Activity { 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.top_area_feed_activity); 
    getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
    getActionBar().setCustomView(R.layout.abs_layout); 
    ActionBar topAreaFeedBar = getActionBar(); 
    topAreaFeedBar.setBackgroundDrawable(new ColorDrawable(Color.RED)); 
    topAreaFeedBar.setDisplayShowTitleEnabled(false); 
    topAreaFeedBar.setDisplayShowTitleEnabled(true); 
    ArrayList<Post> posts = Post.getPosts(); 
    PostAdapter postAdapter = new PostAdapter(TopAreaFeed.this, posts); 
    ListView postListView = (ListView) findViewById(R.id.listView1); 
    postListView.setAdapter(postAdapter); 


} 

public boolean onCreateOptionsMenu(Menu menu){ 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.main_viewer_actions, menu); 
     return super.onCreateOptionsMenu(menu); 

} 
public void openComposeAction(){ 
    Intent composeIntent = new Intent(this, ComposePost.class); 
    startActivity(composeIntent); 
} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle presses on the action bar items 
    switch (item.getItemId()) { 
     case R.id.action_write_post: 
      openComposeAction(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

} 

내 정의되는 listItem이다 내가 내 목록보기에 포스트 어댑터를 구현하는 활동 클래스

import java.util.ArrayList; 

import com.anshikka.solvexxx.R; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageButton; 
import android.widget.TextView; 
public class PostAdapter extends ArrayAdapter<Post> { 
private static class ViewHolder { 
    TextView userName; 
    TextView postContent; 
    TextView timeStamp; 
    ImageButton upVote; 
    ImageButton downVote; 
    TextView voteAmount; 

} 
public PostAdapter(Context context, ArrayList<Post> posts){ 
    super(context, 0, posts); 
} 

public View getView(int position, View convertView, ViewGroup parent){ 
    final Post post = getItem(position); 
    ViewHolder viewHolder; 
    if(convertView == null){ 
     viewHolder = new ViewHolder(); 
     LayoutInflater inflater = LayoutInflater.from(getContext()); 
     convertView = inflater.inflate(R.layout.solution_list_layout, parent, false); 
     viewHolder.userName = (TextView) convertView.findViewById(R.id.userName); 
     viewHolder.postContent = (TextView) convertView.findViewById(R.id.post); 
     viewHolder.timeStamp = (TextView) convertView.findViewById(R.id.timestamp); 
     viewHolder.upVote = (ImageButton) convertView.findViewById(R.id.upVoteButton); 
     viewHolder.downVote = (ImageButton) convertView.findViewById(R.id.downVoteButton); 
     viewHolder.voteAmount = (TextView) convertView.findViewById(R.id.voteAmount); 
     convertView.setTag(viewHolder); 
    } else { 
     viewHolder = (ViewHolder) convertView.getTag(); 
    } 

    viewHolder.userName.setText(post.getPostAuthor()); 
    viewHolder.postContent.setText(post.getPostContent()); 
    viewHolder.timeStamp.setText(post.getPostDate()); 
    viewHolder.upVote.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      post.voteUp(); 
     } 

    }); 
    viewHolder.downVote.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      post.voteDown(); 
     } 
    }); 
    viewHolder.voteAmount.setText(post.getPostVotes()); 

    return convertView; 



} 

} 여기

됩니다 : 여기

사용자 정의 배열 어댑터 코드

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/white_overlay" > 

    <TextView 
     android:id="@+id/userName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/imageView1" 
     android:layout_toRightOf="@+id/imageView1" 
     android:textStyle="bold" 
     android:text="@string/userNameGoesHere" 
     android:textAppearance="?android:attr/textAppearanceSmall" /> 

    <ImageView 
     android:id="@+id/profilePic" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:src="@drawable/user" /> 


    <TextView 
     android:id="@+id/timestamp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/imageButton1" 
     android:layout_alignParentLeft="true" 
     android:text="@string/sampleTimeStamp" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textColor="@color/black_overlay" 
     android:textSize="12sp" /> 

    <ImageButton 
     android:id="@+id/upVoteButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/imageButton1" 
     android:layout_toLeftOf="@+id/imageButton1" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:src="@android:drawable/arrow_up_float" /> 

    <ImageButton 
     android:id="@+id/downVoteButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_below="@+id/post" 
     android:layout_marginRight="20dp" 
     android:layout_marginTop="14dp" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:src="@android:drawable/arrow_down_float" /> 

    <TextView 
     android:id="@+id/voteAmount" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/imageButton2" 
     android:layout_below="@+id/imageButton2" 
     android:layout_marginLeft="21dp" 
     android:text="@string/sampleUpVoteCount" 
     android:textAppearance="?android:attr/textAppearanceSmall" /> 

</RelativeLayout> 
,363,210

스택 트레이스 : 당신이 당신의 어댑터 getView()에 텍스트 뷰하는 int 값을 설정처럼

07-08 11:31:17.167: E/AndroidRuntime(8731): FATAL EXCEPTION: main 
07-08 11:31:17.167: E/AndroidRuntime(8731): Process: com.anshikka.solvexxx, PID: 8731 
07-08 11:31:17.167: E/AndroidRuntime(8731): android.content.res.Resources$NotFoundException: String resource ID #0x0 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.content.res.Resources.getText(Resources.java:268) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.widget.TextView.setText(TextView.java:3923) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at com.anshikka.solvestream.PostAdapter.getView(PostAdapter.java:65) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.widget.AbsListView.obtainView(AbsListView.java:2333) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.widget.ListView.makeAndAddView(ListView.java:1854) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.widget.ListView.fillDown(ListView.java:698) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.widget.ListView.fillFromTop(ListView.java:759) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.widget.ListView.layoutChildren(ListView.java:1673) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.widget.AbsListView.onLayout(AbsListView.java:2145) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.view.View.layout(View.java:15273) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.view.ViewGroup.layout(ViewGroup.java:4763) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1069) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.view.View.layout(View.java:15273) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.view.ViewGroup.layout(ViewGroup.java:4763) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:457) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.widget.FrameLayout.onLayout(FrameLayout.java:392) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.view.View.layout(View.java:15273) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.view.ViewGroup.layout(ViewGroup.java:4763) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at com.android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:494) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.view.View.layout(View.java:15273) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.view.ViewGroup.layout(ViewGroup.java:4763) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:457) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.widget.FrameLayout.onLayout(FrameLayout.java:392) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.view.View.layout(View.java:15273) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.view.ViewGroup.layout(ViewGroup.java:4763) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2057) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1814) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1044) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5749) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.view.Choreographer.doCallbacks(Choreographer.java:580) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.view.Choreographer.doFrame(Choreographer.java:550) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.os.Handler.handleCallback(Handler.java:738) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.os.Handler.dispatchMessage(Handler.java:95) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.os.Looper.loop(Looper.java:135) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at android.app.ActivityThread.main(ActivityThread.java:5070) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at java.lang.reflect.Method.invoke(Native Method) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at java.lang.reflect.Method.invoke(Method.java:372) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:836) 
07-08 11:31:17.167: E/AndroidRuntime(8731):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:631) 
+0

스택 트레이스 – Raghunandan

+0

게시 위치는 어디입니까? 나는 안드로이드 프로그래밍에 상당히 익숙하다. – user3701380

+0

logcat. 예외 부분을 여기에 게시하십시오 – Raghunandan

답변

2

문제는 귀하의 adpater 클래스에 있습니다. 유효한 문자열 값을 textview에 할당했습니다. yourtextview.setText(String.valueOf(val)) 또는 yourtextview.setText(tyourintvalue+""))

0
android.content.res.Resources$NotFoundException: String resource ID 
07-08 11:31:17.167: E/AndroidRuntime(8731): at android.content.res.Resources.getText(Resources.java:268) 
07-08 11:31:17.167: E/AndroidRuntime(8731): at android.widget.TextView.setText(TextView.java:3923) 

보인다.

int를 매개 변수로 취하는 하나의 setText가 있지만, android가 리소스 인 int를 찾지 못하면 ResourceNotFoundException이됩니다. 당신이 필요한 것은 그 사건이 post.getPostVotes()는 int이며 가정

viewHolder.voteAmount.setText(String.valueOf(post.getPostVotes())); 

해야 textview.setText(String.valueOf(yourintvalue))

viewHolder.voteAmount.setText(post.getPostVotes()); 

사용의 경우 PARAM로

CharacterSequence 소요입니다.

관련 문제