마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

listview 1초마다 반복해서 출력하기

0 추천

날짜와 숫자를 한줄에 표시하고 이거를 1초마다 출력해서 밑으로 쌓이게 하고 싶습니다.

제가 구현한거는 날짜와 숫자를 리스트 item으로 만들어서 BaseAdapter를 통해 for문을 이용해서 날짜와 숫자를 출력하는거 까지 했습니다. 

추가로 이걸 리스트뷰로 구현했는데 그냥 textview로도 구현이 가능한것인지도 궁금합니다.

public class MainActivity extends AppCompatActivity {

    private Button button;
    private ListView listView;
    private ListViewAdapter listViewAdapter;
    private SimpleDateFormat simpleDateFormat = new SimpleDateFormat();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 버튼, 리스트뷰, 리스트뷰어댑터 초기화
        button = this.findViewById(R.id.btn1);
        listView = this.findViewById(R.id.listview);
        listViewAdapter = new ListViewAdapter();
        

        //어댑터에 아이템 추가
        for (int i = 0; i < 5; i++) {
            listViewAdapter.addItem(new Dat(System.currentTimeMillis		()), i + "번째");
        }

        //리스트뷰에 어댑터 set
        listView.setAdapter(listViewAdapter);

 

 

peviana (160 포인트) 님이 2018년 1월 15일 질문
peviana님이 2018년 1월 15일 수정

2개의 답변

0 추천
LinearLayout에 코드로 TextView를 생성해서 addView()해주면 됩니다.

그러면 ListView를 꼭 쓸필요는 없습니다.
디자이너정 (42,810 포인트) 님이 2018년 1월 15일 답변
0 추천
타이머를 사용하여 주기 적으로 뷰를 갱신해 주면 됩니다. 백그라운드 쓰레드에서는 뷰를 바로 업데이트 할수 없기 때문에 Handler나 runOnUiThread()를 사용하여 UI를 갱신합니다.

// onCreate()에서 타이머를 설정한다.

Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
        public void run() {
             mHandler.obtainMessage().sendToTarget();
        }
 }, 0, 1000);

 
// 필드에 선언
public Handler mHandler = new Handler() {
    public void handleMessage(Message msg) {
       // 여기서 뷰를 업데이트
  }

};
luxsoft (1,780 포인트) 님이 2018년 7월 23일 답변
...