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

스피너에서 값을 불러오는데 한글로 안나와요 ㅠㅠ

0 추천

안녕하세요 안드로이드 디비 연동 처음해보는 학생입니다 ㅠ

다름이아니라 스피너에 있는 이름을 선택하는데 

이름말고 날짜, 벌금은 다 나오고 이름나와야하는 장소에

패키지명.클래스명@어쩌구저쩌구....

스피너도  items을 설정한건 아니고 디비에서 값을 스피너로 보낸거긴 합니다.

한글로 나오게 도와주세요 ㅠㅠ

// 추가하는 탭

package net.bibim.list;

import java.util.ArrayList;
import java.util.Calendar;

import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

public class Penalty_Add extends Activity {
	private static final String TABLE_PENALTY = "penalty_table";

	DatePicker mDatepicker;
	Button button_date;
	Button button_ok;
	Button button_cancel;
	TextView date_edit;
	TextView name_edit;
	EditText content_edit;
	EditText money_edit;

	private int mYear;
	private int mMonth;
	private int mDay;

	String name = null;
	String date = null;
	Spinner name_spinner;

	SimpleCursorAdapter adapter = null;

	private final String GET_PEOPLE_LIST = "SELECT * FROM people_table"
			+ " ORDER BY _id DESC";

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.penalty_add);

		mDatepicker = (DatePicker) findViewById(R.id.datepicker);
		date_edit = (TextView) findViewById(R.id.date_edit);

		money_edit = (EditText) findViewById(R.id.money_edit);
		content_edit = (EditText) findViewById(R.id.content_edit);
		name_edit = (TextView) findViewById(R.id.name_edit);

		button_ok = (Button) findViewById(R.id.button_ok);
		button_cancel = (Button) findViewById(R.id.button_cancel);

		name_spinner = (Spinner) findViewById(R.id.name_spinner);

		final Calendar c = Calendar.getInstance();
		mYear = c.get(Calendar.YEAR);
		mMonth = c.get(Calendar.MONTH);
		mDay = c.get(Calendar.DAY_OF_MONTH);
		date = String.format("%d.%02d.%02d ", mYear, mMonth + 1, mDay);

		update();

		mDatepicker.init(mDatepicker.getYear(), mDatepicker.getMonth(),
				mDatepicker.getDayOfMonth(),
				new DatePicker.OnDateChangedListener() {

					public void onDateChanged(DatePicker view, int year,
							int monthOfYear, int dayOfMonth) {
						// TODO Auto-generated method stub
						mYear = year;
						mMonth = monthOfYear;
						mDay = dayOfMonth;
						update();
					}
				});
		button_ok.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				SQLiteDatabase db_penalty = null;
				if (db_penalty == null) {
					db_penalty = openOrCreateDatabase("sqlite_penalty.db",
							SQLiteDatabase.CREATE_IF_NECESSARY, null);
				}

				String money = money_edit.getText().toString();
				String content = content_edit.getText().toString();

				ContentValues values = new ContentValues();
				values.put("name", name);
				values.put("money", money);
				values.put("content", content);
				values.put("date", date);

				long aid = db_penalty.insert(TABLE_PENALTY, null, values);
				if (aid == -1) {
					Log.e(getLocalClassName(),
							"db_penalty insert - error occurred");
				}
				if (db_penalty != null) {
					db_penalty.close();
				}
				finish();
			}

		});

		button_cancel.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				finish();
			}
		});

		content_edit.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				content_edit.setText("");
				content_edit.setTextColor(Color.BLACK);
			}
		});

	}

	protected void onResume() {
		super.onResume();
		getDbData();
	}

	private void getDbData() {
		SQLiteDatabase db_people = null;
		if (db_people == null) {
			db_people = openOrCreateDatabase("sqlite_people.db",
					SQLiteDatabase.CREATE_IF_NECESSARY, null);
		}

		Cursor c = db_people.rawQuery(GET_PEOPLE_LIST, null);
		startManagingCursor(c);

		adapter = new SimpleCursorAdapter(this,
				android.R.layout.simple_spinner_item, c,
				new String[] { "name" }, new int[] { android.R.id.text1 });
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		name_spinner.setAdapter(adapter);

		name_spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
			public void onItemSelected(AdapterView<?> parent, View v,
					int position, long id) {
				name = name_spinner.getContext().toString();
//				name = name_spinner.getSelectedItem().toString(); 이렇게해도 안나오고 ㅠ
//				name = name_spinner.getSelectedView().toString(); 이렇게 해도 안나옵니다 ㅠㅠ
			}

			public void onNothingSelected(AdapterView<?> arg0) {
			}
		});
	}

	private void update() {
		date_edit.setText(mYear + "년 " + (mMonth + 1) + "월 " + mDay + "일");
		date = (mYear + "년 " + (mMonth + 1) + "월 " + mDay + "일");
	}

}

 

초보안드진 (160 포인트) 님이 2014년 6월 11일 질문
에러 메세지가 정확히 뭔지좀 봐야 알겠네요.
DB 에서 column 명이 "name"이 맞는지 field 값이 text가 맞는지 확인이 필요 합니다.
private static final String CREATE_PENALTY_TABLE = "CREATE TABLE penalty_table ("
            + "_id INTEGER PRIMARY KEY AUTOINCREMENT,"
            + "name TEXT,"
            + "money TEXT,"
            + "content TEXT,"
            + "date TEXT" + // 날짜 + 시간 -> 정렬
            ");";
테이블은 이렇게 정의해놨구요
/* 테이블에서 데이터 리스트뷰로 가져오는 함수 */
    private void getDbData() {
        SQLiteDatabase db_penalty = null;
        if (db_penalty == null) {
            db_penalty = openOrCreateDatabase("sqlite_penalty.db",
                    SQLiteDatabase.CREATE_IF_NECESSARY, null);
        }

        checkTableIsCreated(db_penalty); // db에 solo_info 테이블이 있는지 확인

        Cursor c = db_penalty.rawQuery(GET_PENALTY_LIST, null);
        startManagingCursor(c);

        listView = (ListView) findViewById(R.id.listView);
        adapter = new SimpleCursorAdapter(this, R.layout.penalty_listlayout, c,
                new String[] { "name", "money",  "date" }, new int[] { R.id.name,
                        R.id.money, R.id.date });
        listView.setAdapter(adapter);
        listView.setDivider(new ColorDrawable(Color.rgb(149, 145, 145)));
        listView.setDividerHeight(2);

        /* 선택한 리스트 자세히 보기 (List 액티비티 -> View 액티비티) */
        listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                Intent intent = new Intent(Penalty_List.this,
                        Penalty_View.class);
                intent.putExtra("id", Long.toString(id)); // id 값을 넘겨줘야 수정, 삭제가
                                                            // 가능
                startActivity(intent);
            }
        });

        if (db_penalty != null) {
            db_penalty.close();
        }
    }

이렇게 가지고 오는데
money, date는 다 숫자로 잘 받아오는데
name 이 net.bibim.list.Penalty_Add@42d5b6eo  이렇게 나옴니다 ㅠㅠ
오류는 안나요 ㅠㅠ

2개의 답변

+1 추천
Context를 저장하니깐 그런거 아닌가요?? 지금 getContext로 받아오는데..
YeonMin (17,860 포인트) 님이 2014년 6월 11일 답변
getSelectedItem() 써도 안되고 position 써도안대서요 ㅠ
쩝..밑에분이 답하셨네 ㅎ
+1 추천
Cursor c = (Cursor)adapter.getItem(position);
name = c.getString(c.getColumnIndex("name"));
페코페코 (250 포인트) 님이 2014년 6월 11일 답변
아 진짜 사랑해요 헐 ㅠㅠ
며칠동안 고민 했는데 감사합니다 ㅠㅠ 많이배워가요!
...