2013-08-14 4 views
0

단추를 누르면 쿼리가 수행되고 데이터가 있거나 데이터가 반환되지 않으면 데이터가 반환됩니다. 이 데이터는 내 목록보기로 전송됩니다. 쿼리에 결과가있는 경우 모든 항목이 예상대로 작동합니다. 데이터가 반환되지 않으면 절이있어서 TextView이 만들어지고 메시지가 사용자에게 표시됩니다.메시지를 표시 한 후 TextView 제거

쿼리를 수행한다고 가정하면 버튼을 누르면 데이터가 반환되지 않습니다. 내 메시지는 예상대로 사용자에게 제공됩니다. 일부 데이터를 반환하는 쿼리를 수행하면 메시지가 사라지고 listview가 예상대로 채워집니다. 이제 데이터가없는 첫 번째 쿼리 (메시지가 사용자에게 표시됨) 이후에 데이터를 반환하지 않는 다른 쿼리를 수행한다고 가정 해보십시오. 메시지가 표시됩니다 (이전 메시지의 "위"에 표시되었을 수도 있음). 이제 데이터로 쿼리를 수행하면 목록 뷰가 채워지지만 메시지는 여전히 존재합니다.

누군가이 일이 왜 일어 났는지 설명 할 수 있습니까? 결과가있는 쿼리와 이전의 결과 메시지가 사라지고 목록보기가 "혼자"가되었을 때 어떻게해야합니까?

searchButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      //GETS THE DATA 

      ListView listContent = (ListView) findViewById(android.R.id.list); 
      MySimpleAdapt arrayListAdapter = new MySimpleAdapt(Search.this, allData); 
      listContent.setAdapter(arrayListAdapter); 

      if (allData.size() == 0) { 
       TextView emptyView = new TextView(getApplicationContext()); 
       emptyView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
       emptyView.setTextColor(Color.BLACK); 
       emptyView.setText(R.string.notFound); 
       emptyView.setPadding(4, 30, 4, 30); 
       emptyView.setTextSize(30); 
       emptyView.setVisibility(View.GONE); 
       emptyView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL); 

       if (getListView().getParent() != null) { 
        ((ViewGroup) getListView().getParent()).addView(emptyView); 
       } 
       getListView().setEmptyView(emptyView); 
      } 
     } 
    }); 
+0

당신이 경우'왜 확실하지 않다 {((뷰 그룹) 위에서 getListView()의 getParent ((. 위에서 getListView()의 getParent() = NULL!).)). addView (emptyView); }'. 그것은 당신에게 어떤 목적을 제공합니까? – Vikram

+0

안녕하세요. 그곳에 없다면, 텍스트 뷰는 보이지 않습니다. – Favolas

+1

'searchButton '이 클릭 될 때마다'if (allData.size() == 0)'를 체크 할 필요가 없습니다. anton이 제안한대로 OnClickListener 외부에서 한 번 emptyView를 만듭니다. 'onClick()'메소드에서 필요한 것은 :'ListView listContent = (ListView) findViewById (android.R.id.list); MySimpleAdapt arrayListAdapter = 새로운 MySimpleAdapt (Search.this, allData); listContent.setAdapter (arrayListAdapter); getListView(). setEmptyView (emptyView);'. 'setEmptyView (View)'를 사용함으로써 체크 (allData.size() == 0)를 ListView에 남겨 둘 수 있습니다. 'allData'가 비어있을 때,'emptyView'는 그 자체로 보여 질 것입니다. – Vikram

답변

1

당신의 텍스트 뷰 데이터가없는 때 상황을 칠 때마다 만들 필요가 없습니다 :

이 내 코드입니다. 클래스의 구성원으로 스토어를 한 번만

당신은 당신이 원하는 스타일 텍스트와 함께, 귀하의 XML 레이아웃에서 텍스트 뷰를 선언하고 설정할 수 있습니다
+0

그래. 그것은 해결책이었습니다. 많은 감사합니다 – Favolas

1

visibility 속성 gone에 초기화 : android:visibility="gone"

얻으려면 다시 프로그래밍 방식 : textView.setVisibility(View.VISIBLE)

는 다시 숨기려면 textView.setVisibility(View.GONE)

+0

좋습니다. 그것은 진행하는 한 가지 방법입니다. Anton의 제안에 따라 작동하도록 만들었으므로이 작업을 시도하지 않았습니다. 그럼에도 불구하고 많은 감사 – Favolas

관련 문제