뷰홀더를 사용한 리스트뷰를 간단히 만들었습니다. 해당소스는 버튼을 누르면 리스트 뷰에 데이터가 들어가는 동작을 합니다.

MainActivity.java

package com.example.shinseongil.testlist;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.Date;

public class MainActivity extends AppCompatActivity {

    private ListView mListView;
    private Button mButton;
    private ArrayList mTestArr; // 데이터 ArrayList
    private MainAdapter mMainAdapter; // 어댑터 클래스
    private boolean mIsInitAdapter = false; //어댑터 초기화 여부
    private int mNumber; //리스트에 표시하는 숫자

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

        mButton = (Button) findViewById(R.id.test_btn);
        mListView = (ListView) findViewById(R.id.test_list);
        mTestArr = new ArrayList<>();
        mMainAdapter = new MainAdapter(this);
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                initData();
                initList();
            }
        });

    }

    private void initList(){
        if (!mIsInitAdapter) {
            mListView.setAdapter(mMainAdapter);
        } else {
            mMainAdapter.notifyDataSetChanged();
        }
    }


    /**
     * 데이터 초기화
     */
    private void initData() {
        for (int i = 0; i < 10; i++) {
            TestData testData = new TestData();
            testData.id = mNumber;
            testData.name = "테스트" + mNumber;
            testData.date = "" + new Date().getTime();
            mTestArr.add(testData);
            mNumber++;
        }
    }

    private class MainAdapter extends BaseAdapter {
        private Context mContext;
        LayoutInflater mInflater;

        public MainAdapter(Context context) {
            this.mContext = context;
            mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

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

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

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

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            TestViewHolder testViewHolder;

            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.test_list_item, null);
                testViewHolder = new TestViewHolder();
                testViewHolder.testId = (TextView) convertView.findViewById(R.id.test_list_id);
                testViewHolder.testName = (TextView) convertView.findViewById(R.id.test_list_name);
                testViewHolder.testDate = (TextView) convertView.findViewById(R.id.test_list_date);
                convertView.setTag(testViewHolder);
            } else {
                testViewHolder = (TestViewHolder) convertView.getTag();

            }
            testViewHolder.testId.setText("" + mTestArr.get(position).id);
            testViewHolder.testName.setText(mTestArr.get(position).name);
            testViewHolder.testDate.setText(mTestArr.get(position).date);

            return convertView;
        }
    }

    /**
     * 홀더 클래스
     */
    public class TestViewHolder {
        public TextView testId;
        public TextView testName;
        public TextView testDate;
    }

    /**
     * Data 클래스
     */
    public class TestData {
        int id;
        String name;
        String date;
    }
}


activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.shinseongil.testlist.MainActivity">

<Button
android:id="@+id/test_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Touch Button"
/>

<ListView
android:id="@+id/test_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/test_btn" />
</RelativeLayout>


test_list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
android:id="@+id/test_list_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

android:text="New Text" />

<TextView
android:id="@+id/test_list_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text" />

<TextView
android:id="@+id/test_list_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text" />
</LinearLayout>





728x90
반응형

이번에는 GitHub에서 예제를 다운로드하는 방법에 대해서 알아볼것입니다.

GitHub이란?

GitHub의 친구, 동료, 급우, 완전한 낯선 사람과 코드를 공유 할 수있는 최고의 장소입니다. 많은 개발자들이 함께 놀라운 일들을 구축 하며 GitHub을 사용합니다.

GitHub.com, 우리의 데스크톱 응용 프로그램 및 GitHub의 기업의 협업 기능으로, 더 빨리, 더 나은 코드를 작성하는 개인과 팀을 위해 쉽게되어있다.

원래 공유 코드를 단순화하기 위해 톰 프레스턴 - 베르너, 크리스 Wanstrath 및 PJ Hyett에 의해 설립되었고
GitHub은 세계 최대의 코드 호스트로 성장했습니다.

아무튼 다른 사람들과의 개발을 협업할 수 있는 제일 좋은 방법이라 소개하는것 같군요

-홈페이지에서 발췌 

-공식 사이트 https://github.com/

아무튼 이제 GitHub에 있는 방대한 자료들을 다운로드 해볼까요?

1.Github 홈페이지에 들어가면 다음과 같이 화면이 보입니다.
  검색창에 다음과같이 원하는 위젯명이나 소스명 등등...을 입력해줍니다.
  저는 LIstView를 검색해 보겟습니다.


2.ListView를 검색해보면 여러가지 예제소스나 라이브러리 리스트가 나타납니다. 
  ① 예제소스나 라이브러리 리스트
  ② 작성된 언어
  ③ 별은 즐겨찾기 그옆에는 공유한 숫자를 뜻하는것 같군요
  우선 저는 별표가 많아보이는(보통 별표가 많을수록 제대로된 소스더군요)

beworker/pinned-section-listview

두번째 여기로 들어가보겟습니다.


3. 들어가보니 다음과 같이 zip파일로 다운 받거나 git로 복사할수있게 되어있네요
   그리고 밑에부분에는 스크린샷이 찍혀져 잇네요~
 



4. 요즘은 이렇게 요기에서 다운 받을 수 있네요


아무튼 간단하게 GitHub에서 예제를 다운로드 받을수있는 방법에 대해서 얘기했습니다.
부족하지만 많은정보를 얻어 가시길;;









728x90
반응형

+ Recent posts