2012-11-08 3 views
0

내 앱을 실행할 때 하나의 목록 항목 만 표시되는 이유는 무엇입니까?둘 이상의 목록 항목이 표시되지 않습니다.

여기 내 MainActivity 클래스의 소스입니다. 앱은 단일 목록 항목을 추가하지만 그 이후에는 나머지 항목을 표시하지 않습니다.

public class MainActivity extends BaseActivity { 

    public static Context appContext; 
    private final String TAG = "Main Activity"; 

    // LIST OF ARRAY STRINGS WHICH WILL SERVE AS LIST ITEMS 
    ArrayList<String> listItems; 

    // DEFINING STRING ADAPTER WHICH WILL HANDLE DATA OF LISTVIEW 
    ArrayAdapter<String> adapter; 

    Button addItem; 
    ListView courseList; 
    EditText input2; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     // ActionBar gets initiated 
     ActionBar actionbar; 
     actionbar = getSupportActionBar(); 
     // Tell the ActionBar we want to use Tabs. 
     actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
     // initiating both tabs and set text to it. 
     ActionBar.Tab assignTab = actionbar.newTab().setText("Assignments"); 
     ActionBar.Tab schedTab = actionbar.newTab().setText("Schedule"); 
     ActionBar.Tab contactTab = actionbar.newTab().setText("Contact"); 

     // Create three fragments to display content 
     Fragment assignFragment = new Assignments(); 
     Fragment schedFragment = new Schedule(); 
     Fragment contactFragment = new Contact(); 

     assignTab.setTabListener(new MyTabsListener(assignFragment)); 
     schedTab.setTabListener(new MyTabsListener(schedFragment)); 
     contactTab.setTabListener(new MyTabsListener(contactFragment)); 

     actionbar.addTab(assignTab); 
     actionbar.addTab(schedTab); 
     actionbar.addTab(contactTab); 
     listItems = new ArrayList<String>(); 
     adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, listItems); 
     addItem = (Button) findViewById(R.id.button1); 
     courseList = (ListView) findViewById(R.id.listView1); 
     input2 = (EditText) findViewById(R.id.editText1); 
     addItem.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       if (!(input2.getText().toString()).equals("")) { 
        listItems.add(input2.getText().toString()); 
        courseList.setAdapter(adapter); 
       } 
       input2.setVisibility(View.INVISIBLE); 
       addItem.setVisibility(View.INVISIBLE); 
      } 
     }); 
     final Intent intent = new Intent(this, Detail.class); 
     courseList.setOnItemClickListener(new  AdapterView.OnItemClickListener() { 
        @Override 
        public void onItemClick(AdapterView<?> arg0,  View arg1, 
          int arg2, long arg3) { 
         if (isTablet(MainActivity.this)) { 

         } else { 
          startActivity(intent); 
         } 

        } 
       }); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case R.id.add_item: 
      input2.setVisibility(View.VISIBLE); 
      input2.requestFocus(); 
      addItem.setVisibility(View.VISIBLE); 
      Log.i(TAG, "Add Clicked"); 
      return true; 
     case R.id.calendar: 
      Log.i(TAG, "Calendar Clicked"); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
     } 
    } 

    public boolean isTablet(Context context) { 
     boolean xlarge =  ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == 4); 
     boolean large = ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE); 
     return (xlarge || large); 
    } 
} 

이것은 단편을 동적으로 추가 한 후에 발생합니다. 프래그먼트가 잘 표시되지만, 태블릿보기에서 목록 항목을 취소 할 수 없게 만들었으므로 나타나지 않습니다. 그것과 관련이 있습니까?

답변

0

목록에 항목을 추가 한 후 코드에 adapter.notifyDataSetChanged()을 추가해야합니다. 또한 어댑터를 한 번 설정하십시오. 사용자가 버튼을 누를 때마다 호출을 실행할 필요가 없습니다.

+0

여전히 작동하지 않습니다. 재미있는 점은 태블릿보기에서만 발생한다는 것입니다. – aindurti

관련 문제