0

嗨在我的项目中,我正在使用自定义适配器。当包含列表视图的活动打开时,图像视图和文本视图首先出现,然后一段时间视图消失。我找不到解决方案吗? 编辑: 它也适用于模拟器,但不工作在普通设备上?视图后从列表视图消失

其中i设置适配器类:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_person_deatil); 
    Intent detailIntent = getIntent(); 
    Gson gson = new Gson(); 
    String obj = detailIntent.getStringExtra("obj"); 
    PeopleListItem people = gson.fromJson(obj, PeopleListItem.class); 

    ListView lw = (ListView) findViewById(R.id.perdetLw); 

    PeopleListItem[] list = new PeopleListItem[6]; 
     for(int i=0; i<6; i++){ 
      list[i] = people; 
     } 

    ActionBar ab = getActionBar(); 
    ab.setDisplayHomeAsUpEnabled(true); 
    ab.setTitle(people.getName()); 
    ab.setIcon(R.drawable.ic_action_person); 

    PeopleDetailArrayAdapter adp = new PeopleDetailArrayAdapter(this, R.layout.person_detail_item, list); 
    lw.setAdapter(adp); 

} 

类的定制适配器的:

public class PeopleDetailArrayAdapter extends ArrayAdapter<PeopleListItem> { 

int resource; 
Context context; 
int count = 0; 
public PeopleDetailArrayAdapter(Context context, int resource, 
     PeopleListItem[] list) { 
    super(context, resource, list); 
    this.resource = resource; 
    this.context = context; 
} 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 

    final PeopleListItem peopleObj = getItem(position); 
    LayoutInflater layoutInflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View listViewItem = layoutInflator.inflate(resource, null); 

    final TextView textView = (TextView) listViewItem.findViewById(R.id.detailTw); 
    final TextView textView1 = (TextView) listViewItem.findViewById(R.id.detailTw1); 
    final ImageView imageView = (ImageView) listViewItem.findViewById(R.id.detailIw);//img view kişinin resmine göre değişmeli 
    final ImageView imageView1 = (ImageView) listViewItem.findViewById(R.id.detailIw1); 

    switch (count) { 
    case 0: 
     textView.setText("Title:"); 
     String title = peopleObj.getTitle(); 
     textView1.setText(title); 
     break; 
    case 1: 
     textView.setText("Department:"); 
     String dep = peopleObj.getDepart(); 
     textView1.setText(dep); 
     break; 
    case 2: 
     textView.setText("Work Phone:"); 
     String wp = peopleObj.getWorkPhone(); 
     textView1.setText(wp); 
     imageView.setVisibility(ImageView.VISIBLE); 
     break; 
    case 3: 
     textView.setText("Mobile Phone:"); 
     String mp = peopleObj.getMobilePhone(); 
     textView1.setText(mp); 
     imageView.setVisibility(ImageView.VISIBLE); 
     imageView1.setVisibility(ImageView.VISIBLE); 
     break; 
    case 4: 
     textView.setText("Email:"); 
     String email = peopleObj.getEmail(); 
     textView1.setText(email); 
     break; 
    case 5: 
     textView.setText("Manager:"); 
     String man = peopleObj.getManager(); 
     textView1.setText(man); 
     break; 
    default: 
     break; 
    } 
    count++; 
    return listViewItem; 
} 

} 
+0

为什么你把'list'的所有元素都赋给同一个'people'变量? – mangusta

+0

不要为创建布局而浪费时间,我会为包含所有需要的行创建一个简单的布局。 – calypso

+0

你可以使用** ViewHolder **模式来获得更好的性能。 – Piyush

回答

0

我通过使用position,而不是使用count

  public class PeopleDetailArrayAdapter extends ArrayAdapter<PeopleListItem> { 

int resource; 
Context context; 

public PeopleDetailArrayAdapter(Context context, int resource, 
     PeopleListItem[] list) { 
    super(context, resource, list); 
    this.resource = resource; 
    this.context = context; 
} 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 

    final PeopleListItem peopleObj = getItem(position); 
    LayoutInflater layoutInflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View listViewItem = layoutInflator.inflate(resource, null); 

    final TextView textView = (TextView) listViewItem.findViewById(R.id.detailTw); 
    final TextView textView1 = (TextView) listViewItem.findViewById(R.id.detailTw1); 

    switch (position) { 
    case 0: 
     textView.setText("Title"); 
     String title = peopleObj.getTitle(); 
     textView1.setText(title); 
     break; 
    case 1: 
     textView.setText("Department"); 
     String dep = peopleObj.getDepart(); 
     textView1.setText(dep); 
     break; 
    case 2: 
     textView.setText("Work"); 
     String wp = peopleObj.getWorkPhone(); 
     textView1.setText(wp); 
     break; 
    case 3: 
     textView.setText("Mobile"); 
     String mp = peopleObj.getMobilePhone(); 
     textView1.setText(mp); 
     break; 
    case 4: 
     textView.setText("Email"); 
     String email = peopleObj.getEmail(); 
     textView1.setText(email); 
     break; 
    case 5: 
     textView.setText("Manager"); 
     String man = peopleObj.getManager(); 
     textView1.setText(man); 
     break; 
    } 

    return listViewItem; 
} 

}

解决的问题