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