2016-04-12 20 views
1

Çalışmaya çalışırken birçok farklı öğreticiyi denedim. Makinemde bir sorun olup olmadığını merak ediyorum .. Bu, myadapter oluşturduğum ve ListView'e ayarladığım MainActivitem.Özel Temel Bağdaştırıcı ListView

public class MainActivity extends Activity { 

UserRepo userRepo; 
ArrayList<user> userList; 
ListView list; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    list = (ListView) findViewById(R.id.listView); 
    userRepo = new UserRepo(); 
    userList = userRepo.getUserArrayList(); 
    UserAdapter myadapter = new UserAdapter(this, userList); 
    list.setAdapter(myadapter); 
} 

} 

Bu benim özel kullanıcı sınıfım.

public class user { 

String name; 
String description; 


public user(String name, String description) { 
    this.name = name; 
    this.description = description; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getDescription() { 
    return description; 
} 

public void setDescription(String description) { 
    this.description = description; 
} 
} 

Bu benim özel UserAdapter'ım. Bu kadar farklı öğreticiden çok farklı versiyonları denedim ve ne yaptığım önemli değil, bunu geçmekte olduğum ArrayList ile çalışmaya başlayamıyorum.

public class UserAdapter extends BaseAdapter { 


ArrayList<user> list; 
Context context; 
LayoutInflater mInflater; 

public UserAdapter(Context c, ArrayList<user> list) 
{ 
    context = c; 
    this.list = list; 
    mInflater = LayoutInflater.from(this.context); 

} 

@Override 
public int getCount() { 
    return list.size(); 
} 

@Override 
public Object getItem(int position) { 
    return list.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    MyViewHolder mViewHolder; 

    if (convertView == null) { 
     convertView = mInflater.inflate(R.layout.rowlayout, parent, false); 
     mViewHolder = new MyViewHolder(convertView); 
     convertView.setTag(mViewHolder); 
    } else { 
     mViewHolder = (MyViewHolder) convertView.getTag(); 
    } 

    user currentListData = (user) getItem(position); 

    mViewHolder.tv_name.setText(currentListData.getName()); 
    mViewHolder.tv_description.setText(currentListData.getDescription()); 


    return convertView; 
} 

private class MyViewHolder { 
    TextView tv_name, tv_description; 


    public MyViewHolder(View item) { 
     tv_name = (TextView) item.findViewById(R.id.tv_name); 
     tv_description = (TextView) item.findViewById(R.id.tv_description); 

    } 
} 
} 

Bu benim ArrayList oluşturmak ve bunu oluşturmak ve bir tane dönmek için kullanabileceğiniz bir yöntem var benim UserRepo olduğunu.

public class UserRepo { 
ArrayList<user> list; 

public ArrayList<user> getUserArrayList(){ 
    user john = new user("John", "Samoan Flatmate"); 
    list.add(john); 
    user ariki = new user ("Ariki", "Māori Flatmate"); 
    list.add(ariki); 
    user dion = new user ("Dion", "Asian Flatemate"); 
    list.add(dion); 

    return list; 
} 
} 

Bu ArrayList<user> list başlatmak asla UserRepo sınıfının içinde benim bildirim dosyası

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.petakirikiri.customlistview"> 
<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 
</manifest> 
+2

Sen asıl sorunun ne olduğunu söylemek asla bir örneğini oluşturmak gerekir! Uygulama kilitleniyor mu? Eğer öyleyse lütfen yığın izini logcat'ten ekleyin. Başlangıçta gözüken bir şey, 'ArrayList listesinin 'UserRepo'da yeni bir' ArrayList 'örneğine nerede atandığını görmüyorum. –

+0

Evet, üzgünüm çöküyor, logcat'ımda ne demek istediğimi anlatamam. Nedeni: java.lang.NullPointerException com.example.petakirikiri.customlistview.UserRepo.getUserArrayList (UserRepo.java:13) com.example.petakirikiri.customlistview.MainActivity.onCreate (MainActivity.java:23) – NewToAnroid

+0

Teşekkür ederiz George Mulligan sen haklıydın. Büyük yardımlar Son iki gündür saçlarımı çıkardığım için buradayım. Sanırım bu, yolculuğun bir parçası ... – NewToAnroid

cevap

1

olduğunu. Başlamak için kodu değiştirin.

public class UserRepo { 
    ArrayList<user> list = new ArrayList<>(); 
    // The rest of your code 
} 
+0

Zaman ayırdığınız için tekrar teşekkür ederiz. Bu iki gün boyunca beni yok ediyordu ve sadece bu basit kod satırıydı :( – NewToAnroid

+0

Bir şey değil. Daha tecrübeli hale geldikçe, bu yığın izinin size ne söylemeye çalıştığını ve nasıl düzeltileceğini tam olarak anlayacaksınız. –

0

Bir ArrayList'den

public class UserRepo { 
    ArrayList<user> list; 

    public ArrayList<user> getUserArrayList(){ 
    list = new ArrayList<>(); 
    user john = new user("John", "Samoan Flatmate"); 
    list.add(john); 
    user ariki = new user ("Ariki", "Māori Flatmate"); 
    list.add(ariki); 
    user dion = new user ("Dion", "Asian Flatemate"); 
    list.add(dion); 

    return list; 
    } 
} 
İlgili konular