آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

دلیل اجرا نشدن listViewساده کاستوم

ayhan  11 سال پیش  11 سال پیش
+2 0

با سلام دوستان یه لیست ویویی با توجه به اموزشی پیش رفتم وقتی اجراش میکنم تو امیلاتور بالا نمیاد ممنون میشم کمکم کنین

 package com.example.newayhan2;

import java.util.List;

import android.support.v7.app.ActionBarActivity;
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends ListActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setListAdapter(new MyAdapter(this,android.R.layout.simple_list_item_1,
R.id.textView1,
getResources().getStringArray(R.array.itemName)));

}
private class MyAdapter extends ArrayAdapter<String>{

public MyAdapter(Context context, int resource, int textViewResourceId,
String[] strings) {
super(context, resource, textViewResourceId,strings);
// TODO Auto-generated constructor stub
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row=inflater.inflate(R.layout.list_item,parent,false);
String[] items=getResources().getStringArray(R.array.itemName);
ImageView iv =(ImageView)findViewById(R.id.imageView1);
TextView tv=(TextView)findViewById(R.id.textView1);
tv.setText(items[position]);
if(items[position].equals("united state")){
iv.setImageResource(R.drawable.ic_launcher);
}else if (items[position].equals("Brezil")) {
iv.setImageResource(R.drawable.ic_launcher);
}
return row;
}
}}


+1 0
منظور از بالا نیومدن چی هست؟خطا میده یا صفحه سفید؟اگه خطا میده ک یه تصویری از خطا بفرس (11 سال پیش)
 برای این سوال 9 پاسخ وجود دارد.
پاسخ به سوال 
ayhan  11 سال پیش
0 0

ارورر رو به این لایه گرفت

 			tv.setText(items[position]);
+1 0
دوست عزیز تو متد super کانستراکتورت رو به ورودی های متد super تخصیص بده فکر کنم ایرادش مال این قسمت باشه (11 سال پیش)
0 0
مهندس ارورر به این لایه گرفت (11 سال پیش)
+1 0
خب نال هست دیگه شما باید پارامتر از متد کانستراکتور بگیری تا کار کنه؟وقتی نگرفتی مقدای چی میخوای نشون بده بهت؟ (11 سال پیش)
0 0
من تو قسمت value یه xml به اسمitemNamenدرست کردم اونو فراخوانی میکنه (11 سال پیش)
پاسخ به سوال 
saeidhic  11 سال پیش
0 0

یعنی اینجوری :

 public MyAdapter(Context context, int resource, int textViewResourceId,
				String[] strings) {
			super(context, resource, textViewResourceId, strings);
			context = this.context;
strings = this.strings; }
پاسخ به سوال 
ayhan  11 سال پیش
0 0

 07-04 10:51:22.329: E/AndroidRuntime(5294): 	at com.example.newayhan2.MainActivity$MyAdapter.getView(MainActivity.java:44)


پاسخ به سوال 
saeidhic  11 سال پیش
+1 0

دوست عزیز مگه شما در این عبارت مقدار کانستراکتور یا سازندت رو ست نکردی؟

 etListAdapter(new MyAdapter(this,android.R.layout.simple_list_item_1,
				R.id.textView1,
				getResources().getStringArray(R.array.itemName)));

خب اینجا 4 تا پارامتر داری:
context
inr res
int text id
string[]
حالا کلاس باباش باید مقادیرش رو ست کنه یا نه؟

به این خط نگاه کن:

 	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

این دقیقا منظوره منه:

 public MyAdapter(Context context, int resource, int textViewResourceId,
				String[] strings) {
			super(context, resource, textViewResourceId, strings);
			context = this.context;
strings = this.strings;
		}
0 0
منظور شما رو هم زدم خوب جواب نداد (11 سال پیش)
پاسخ به سوال 
ayhan  11 سال پیش
0 0

اینم ازxml:

 <?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="itemName">
<item name="usa">united state</item>
<item name="brazil">Brezil</item>



</string-array>

</resources>

 <?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" >

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

<ImageView
android:id="@+id/imageView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:src="@drawable/ic_launcher" />

<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="TextView" />

</LinearLayout>

</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical" >

<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
tools:listitem="@layout/list_item" >

</ListView>

</LinearLayout>
0 0
کل سورسها رو گذاشتم یکی نیس کمک کنه (11 سال پیش)
+1 0
یه نگاه به این مثال بنداز دقیقا عین این انجام بده اگه جواب نداد یه راه حل دیگه بهت میگم دیگه اون صد در صد جواب میده لینک (11 سال پیش)
پاسخ به سوال 
saeidhic  11 سال پیش
+1 0

ببین دوست عزیز من این کد هارو زدم دقیقا برنامه خوب کار میکنه بدون هیچ ایرادی

سورس MainActivity:

 import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ListView;


public class MainActivity extends AppCompatActivity {
	private ListView lst_main;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lst_main = (ListView) findViewById(R.id.lst_main);
        MyListViewAdabter adapter = new MyListViewAdabter(MainActivity.this , R.layout.lst_row_view , R.id.txt_lst_row , getResources().getStringArray(R.array.array));
        lst_main.setAdapter(adapter);
    }
}

اینم سورس کد MyListViewAdapter:

 import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class MyListViewAdabter extends ArrayAdapter<String>{
	
	private final Context context;
	private final String[] array;
	LayoutInflater inflater;
	
	public MyListViewAdabter(Context context , int layoutRes , int textId , String[] array){
		super(context, R.layout.lst_row_view, R.id.txt_lst_row, array);
		this.context = context;
		this.array = array;
	}
	private static class ViewHolder{
		TextView textView;
	}
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		ViewHolder viewHolder;
		if(convertView == null){
			inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			convertView = inflater.inflate(R.layout.lst_row_view, parent , false);
			viewHolder = new ViewHolder();
			viewHolder.textView = (TextView) convertView.findViewById(R.id.txt_lst_row);
			convertView.setTag(viewHolder);
		}
		else {
			viewHolder = (ViewHolder) convertView.getTag();
		}
		viewHolder.textView.setText(array[position]);
		
		return convertView;
	}
	

	
}
پاسخ به سوال 
Spirit  11 سال پیش
+2 0

دقت کنید :

 TextView tv=(TextView) row.findViewById(R.id.textView1);

 

+1 0
بله دقیقا آقای Spirit درست گفتن من هم درست به سورس کد دقت نکردم (11 سال پیش)
0 0
ممنونم آقای spirit وای یدونه کلمه row کل امروزمو زد بهم .واقعا ممنون کد نویسی چقدر حساسه.بازم تشکر (11 سال پیش)
پاسخ به سوال 
moin  11 سال پیش
+1 0

به نظر من اصلا سورسی که میخواد عناصرش در لیست ویو قرار بگیره ارتباطش با ArrayAdapter برقرار نشده ، یعنی چیزی تو لیست ویو ریخته نمیشه که بخواد نشون بده  مقادیری که میخوای نشون بدی ، وقتی از json  تحویل میگیری تو آرایه که در کلاس G تعریف شده ریخته میشن ؟ اگر ریخته میشن ، مشکل از Adapternote



import java.util.ArrayList;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;


public class AdapterNote extends ArrayAdapter {

@SuppressWarnings("unchecked")
public AdapterNote(ArrayList<StructItem> array) {
super(G.context, R.layout.adapter_items, array);
}


private static class ViewHolder
{

final public ViewGroup layoutRoot;
final public TextView txtID;
final public TextView txtName;
final public CheckBox chkSel;
final public ImageView imgDelete;


public ViewHolder(View view)
{
txtID = (TextView) view.findViewById(R.id.txtID);
txtName = (TextView) view.findViewById(R.id.txtName);
chkSel = (CheckBox) view.findViewById(R.id.chkSel);
imgDelete = (ImageView) view.findViewById(R.id.imgDelete);
layoutRoot = (ViewGroup) view.findViewById(R.id.layoutRoot);

}


public void fill(final ArrayAdapter<StructItem> adapter,
final StructItem item, final int position)
{
txtID.setText(item.did + "");
txtName.setText(item.dname);

}
}


@SuppressWarnings("unchecked")
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
ViewHolder holder;
StructItem item = (StructItem) getItem(position);
if (convertView == null)
{
convertView = G.inflater.inflate(R.layout.adapter_items,
parent, false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);

}
else
{
holder = (ViewHolder) convertView.getTag();
}
holder.fill(this, item, position);
return convertView;

}

}

پاسخ به سوال 
ayhan  11 سال پیش
0 0

با سلام ممنون از تمام دوستان و اساتید بخصوص اقای spirit دوستان تو این حالت من میخوام هر ایتم رو فراخوانی ببینین این کد چگونه تغییر بدم جواب بدم کدها انگار ایراد داره بر روی ایتمها اثری ندار بازم ممنون

 	@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
String[] items=getResources().getStringArray(R.array.itemName);
String chess=items[position];
try {
Class ourClass = Class.forName("com.example.newayhan2."+chess);


Intent ourIntent=new Intent(MainActivity.this,ourClass);
startActivity(ourIntent);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .