2016-04-22 3 views
0

私はslidenerds youtube 6 part tutorialを試して、カスタム行のリストビューを作成しようとしました。彼のチュートリアルでは、1つの画像と2つのテキストビューを使用していました.3つの画像と3つのテキストビューが必要でした。アプリケーションを実行するとクラッシュしてリストビューを読み込みました。カスタム行リストビューアのアダプタがクラッシュする

------------- homesinglerow.xml -----------------------

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="Lilly" 
    android:textColor="#2c7134" 
    android:textStyle="bold" 
    android:id="@+id/dogName" 
    android:textSize="24dp" /> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    <ImageButton 
     android:id="@+id/dogimage" 
     android:layout_width="150dip" 
     android:layout_height="150dip" 
     android:layout_alignParentLeft="true" 
     android:clickable="true" 
     android:onClick="sendProfile" 
     android:scaleType="fitXY" 
     android:src="@drawable/lilly" 
     android:background="?attr/selectableItemBackground" /> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom" 
     android:orientation="vertical"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Timestamp 1" 
      android:textColor="#2c7134" 
      android:id="@+id/timestamp1"/> 

     <ImageButton 
      android:id="@+id/dog1num1" 
      android:layout_width="75dip" 
      android:layout_height="75dip" 
      android:layout_marginLeft="10dp" 
      android:clickable="true" 
      android:onClick="NumberOne" 
      android:scaleType="fitXY" 
      android:src="@drawable/num1" 
      android:background="?attr/selectableItemBackground" /> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom" 
     android:orientation="vertical"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Timestamp 1" 
      android:textColor="#2c7134" 
      android:id="@+id/timestamp2"/> 

     <ImageButton 
      android:id="@+id/dog1num2" 
      android:layout_width="75dip" 
      android:layout_height="75dip" 
      android:layout_marginLeft="10dp" 
      android:clickable="true" 
      android:onClick="NumberOne" 
      android:scaleType="fitXY" 
      android:src="@drawable/num2" 
      android:background="?attr/selectableItemBackground"/> 

    </LinearLayout> 

</LinearLayout> 
</LinearLayout> 

------------------ Homelistview.xml -----------------

<?xml version="1.0" encoding="utf-8"?> 
<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" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
tools:context="cs495capstone.edu.bsu.doggydid.HomeActivityListview 
" 
android:background="@drawable/screenbackground"> 


<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/selectprofiletext" 
    android:textColor="#2c7134" 
    android:text="Select a profile or make a post:" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentStart="true" /> 

<ListView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/listView" 
    android:entries="@array/dogs" 
    android:layout_below="@id/selectprofiletext" 
    android:layout_above="@+id/newdogbutton" /> 

<Button 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="Add new dog" 
    android:id="@+id/newdogbutton" 
    android:background="#2c7134" 
    android:allowUndo="true" 
    android:textColor="#f3ca83" 
    android:clickable="true" 
    android:onClick="AddNewDog" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentStart="true" /> 

</RelativeLayout> 

----- ----------- Homeactivitylistview.java -----------------------

public class HomeActivityListview extends AppCompatActivity { 

    ListView list; 
    Context context; 
    ArrayList dogName; 
    ArrayList dogID; 
    int [] dogImages = {R.drawable.lilly, R.drawable.dogpic}; 
    public static int [] dogNames={R.id.dogName, R.id.dogName}; 
    int [] num1={R.id.dog1num1, R.id.dog1num1, R.id.dog1num1, R.id.dog1num1, R.id.dog1num1}; 
    int [] num2={R.id.dog1num2, R.id.dog1num2, R.id.dog1num2, R.id.dog1num2, R.id.dog1num2}; 
    String[] names; 
    String[] timestamp1; 
    String[] timestamp2; 

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

     Resources res = getResources(); 
     names=res.getStringArray(R.array.names); 
     timestamp1=res.getStringArray(R.array.timestamps1); 
     timestamp2=res.getStringArray(R.array.timestamps2); 
     context=this; 

     list =(ListView) findViewById(R.id.listView); 
     dogAdapter adapter=new dogAdapter(this, names, dogImages, num1, num2, timestamp1, timestamp2); 
     list.setAdapter(adapter); 
    } 

class dogAdapter extends ArrayAdapter<String> 
{ 
    Context context; 
    int[] dogImages; 
    int[] num1; 
    int[] num2; 
    String[] nameArray; 
    String[] timestamp1Array; 
    String[] timestamp2Array; 
    dogAdapter(Context c, String[] names, int imgs[], int numb1[], int numb2[], String[] time1, String[] time2) 
    { 
     super(c,R.layout.home_single_row,R.id.dogName,names); 
     this.context=c; 
     this.dogImages=imgs; 
     this.num1=numb1; 
     this.num2=numb2; 
     this.nameArray=names; 
     this.timestamp1Array=time1; 
     this.timestamp2Array=time2; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater= (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View row=inflater.inflate(R.layout.home_single_row,parent, false); 

     ImageView dogImg=(ImageView) row.findViewById(R.id.dogimage); 
     ImageView img1=(ImageView) row.findViewById(R.id.dog1num1); 
     ImageView img2=(ImageView) row.findViewById(R.id.dog1num2); 
     TextView name=(TextView) row.findViewById(R.id.dogName); 
     TextView time1=(TextView) row.findViewById(R.id.timestamp1); 
     TextView time2=(TextView) row.findViewById(R.id.timestamp2); 

     dogImg.setImageResource(dogImages[position]); 
     img1.setImageResource(dogImages[position]); 
     img2.setImageResource(dogImages[position]); 
     name.setText(nameArray[position]); 
     time1.setText(timestamp1Array[position]); 
     time2.setText(timestamp2Array[position]); 

     return row; 
    } 
} 



public void sendProfile(View view) { 
     Intent intent = new Intent(getApplicationContext(), DogProfileActivity.class); 
     startActivity(intent); 

    } 

    public void NumberOne(View view) { 
     AlertDialog.Builder alertDlg = new AlertDialog.Builder(this); 
     alertDlg.setMessage("Confirm Dog went number one"); 
     alertDlg.setCancelable(false); 

     alertDlg.setPositiveButton("Confirm", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       //HomeActivity.super.onBackPressed(); 
      } 
     }); 

     alertDlg.setNegativeButton("Change", new DialogInterface.OnClickListener(){ 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       //HomeActivity.super.onBackPressed(); 
      } 
     }); 
     alertDlg.create().show(); 

    } 
    public void NumberTwo(View view) { 
     AlertDialog.Builder alertDlg = new AlertDialog.Builder(this); 
     alertDlg.setMessage("Confirm Dog went number two"); 
     alertDlg.setCancelable(false); 

     alertDlg.setPositiveButton("Confirm", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       //HomeActivity.super.onBackPressed(); 
      } 
     }); 

     alertDlg.setNegativeButton("Change", new DialogInterface.OnClickListener(){ 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       //HomeActivity.super.onBackPressed(); 
      } 
     }); 
     alertDlg.create().show(); 

    } 

    public void AddNewDog(View view) { 
     Intent intent = new Intent(getApplicationContext(), NewDogActivity.class); 
     startActivity(intent); 
    } 


} 

04-22 15:49 :36.597 28628-28628/cs495capstone.edu.bsu.doggメインの プロセス:cs495capstone.edu.bsu.doggydid、PID:28628 java.lang.OutOfMemoryError:dalvik.systemでOOM までの738608バイトと721KBの4194316バイトの割り当てを割り当てられませんでしたandroid.graphics.BitmapFactory.decodeResourceStreamでandroid.graphics.BitmapFactory.decodeStream(BitmapFactory.java:856) で.VMRuntime.newNonMovableArray android.graphics.BitmapFactory.nativeDecodeAsset(ネイティブメソッド)での(ネイティブメソッド) (BitmapFactory.java :675)android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:2228)の で(リソース:.java:4285) 3935)android.widget.ImageViewでandroid.content.res.TypedArray.getDrawable(TypedArray.java:886) で 。android.widget.ImageButtonで(ImageView.java:157) 。(ImageButton.java:85) android.widget.ImageButtonで 。android.support.v7.widget.AppCompatImageButtonで(ImageButton.java:81) 。(AppCompatImageButton.java:59) android.support.v7.widget.AppCompatImageButtonた。(AppCompatImageButt on.java:55)アンドロイドでandroid.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:938でandroid.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:107) で) 。 android.view.LayoutInflater.createViewFromTagでandroid.support.v4.view.LayoutInflaterCompatHC $ FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44) でsupport.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:992) (LayoutInflater。 java:758) android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716) android.view.LayoutInflater.rInflate(LayoutInflater.java:847)android.view.LayoutInflater.rInflateChildrenでandroid.view.LayoutInflater.rInflate(LayoutInflater.java:855) でandroid.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810) (LayoutInflater.java:810) ででandroid.view.LayoutInflater.rInflater(LayoutInflater.java:855) android.view.LayoutInflater.rInflateChildren(LayoutInflater。java:810) android.view.LayoutInflater.inflate(LayoutInflater.java:527) android.view.LayoutInflater.inflate(LayoutInflater.java:429) at cs495capstone.edu.bsu.doggydid.HomeActivityListview $ dogAdapter。 getView(HomeActivityListview.java:74) android.widget.AbsListView.obtainView(AbsListView.java:2929) (android.widget.ListView.measureHeightOfChildren(ListView.java:1305)) (android.widget.ListView.onMeasure android.widget.RelativeLayout.measureChildHorizo​​ntal(RelativeLayout.java:716でandroid.view.View.measure(View.java:20151) でListView.java:1212) )android.window.RelativeLayout.onMeasure(RelativeLayout.java:462)のとandroid.view.View.measure(View.java:20151)の (android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6328)) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135) android.view.View.measure(View.java:20151) android.windget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)の android.view.View.ViewGroup.measureChildWithMargins(ViewGroup.java:6328) でandroid.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) とandr oid.widget.LinearLayout.measureVertical(LinearLayout.java:747)android.widget.LinearLayout.onMeasure(LinearLayout.java:629)で android.view.View.measure(View.java:20151)で アンドロイドで 。 view.ViewGroupMeasureChildWithMargins(ViewGroup.java:6328) とandroid.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure(View.java:20151) android.viewにあります。 ViewGroup.measureChildWithMargins(ViewGroup.java:6328) とandroid.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) とandroid.widget.LinearLayout.measureVertical(LinearLayout.java:747)012 android.view.ViewGroup.measureChildWithMarginsでandroid.view.View.measure(View.java:20151) でandroid.widget.LinearLayout.onMeasure(LinearLayout.java:629) (ViewGroup.java:6328) ででandroid.widget.FrameLayout.o

答えて

0

あなたが不足している:

setAdapter() Sets the data behind this ListView. The adapter passed to this method may be wrapped by a WrapperListAdapter, depending on the ListView features currently in use. For instance, adding headers and/or footers will cause the adapter to be wrapped.

list.setAdapter(dogAdapter); 
が、私はこの重要なポイントは、ビデオで説明されていなかったと思います!

//Get ListView reference. 
list =(ListView) findViewById(R.id.listView); 
//create the Adapter instance. 
dogAdapter adapter=new dogAdapter(this, names, dogImages, num1, num2, timestamp1, timestamp2); 
//Set the adapter to the ListView! 
list.setAdapter(dogAdapter); 
+0

dogAdapterの代わりに式を内部に求めていましたが、これをアダプタとその幸せに変更しました。以上のおかげで、彼はそれが速く、その後すぐに離れてクリックされなかった小さなステップが戻ってビデオでチェックしていることでした。 – shadowice0823

関連する問題