Apriliyaa
سه شنبه 21 مهر 1394, 20:07 عصر
سلام
یه مشکل در لیست ویو دارم که کلا شرح میدم دوستان اگه نظری دارند خوشحال میشم بشنوم و عمل کنم !
برنامه متشکل از دو لیست ویو هست که لیست ویو دوم زیرمجموعه ی آیتم های لیست ویو اول هست.
مشکل از اونجا شروع میشه که هر ایتمی از لیست ویو شماره یک انتخاب بشه، زیرمجموعه های اون ها هم شبیه هم در میاد به تصویر زیر توجه کنید :
من وقتی کتاب اول رو انتخاب می کنم :
http://up.vbiran.ir/uploads/1967314447575797778_1111111.png
لیست داستان ها نشون داده میشه :
http://up.vbiran.ir/uploads/15609144475758029957_222222.png
در ادامه اگه کتاب دوم رو انتخاب کنم باز لیست تمام داستان ها نشون داده میشه در حالی که من در نظر دارم :
وقتی کتاب اول انتخاب میشه در لیست داستان ها، داستان های شماره 1و 2 و3 نشون داده بشه و وقتی کتاب دوم رو انتخاب می کنم داستان های 4 و 5 و 6 نشون داده بشه و الی آخر ....
اطلاعات همگی در دیتابیس sqlite ذخیره شده و از اونجا فراخونی میشه
اگه بتونید کمک کنید حلش کنم ممنون میشم
این کد های مربوط به لیست ویو اوله:
import java.util.ArrayList;
import android.app.ActionBar;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.EditText;
import android.widget.ListView;
import com.quranmp3.controllers.AudioListManager;
import com.quranmp3.model.Reciters;
import com.quranmp3.utils.GlobalConfig;
public class RecitersFragment extends Fragment {
private View view;
private ListView lv_reciters;
private RecitersItemAdapter recitersItemAdapter;
private RecitersFragment _scope;
private EditText reciters_Search;
MainActivity _FragmentActivity = null;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
_FragmentActivity = (MainActivity) activity;
} catch (Exception e) {
_FragmentActivity = null;
}
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Fragment _fragment = null;
_fragment = new AdmobFragment();
FragmentManager _fragmentManager = getFragmentManager();
_fragmentManager.beginTransaction()
.add(R.id.admob_container, _fragment).commit();
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar actionbar;
actionbar = this.getActivity().getActionBar();
// actionbar.setTitle(getResources().getString(R.stri ng.chapters));
setHasOptionsMenu(true);
view = inflater.inflate(R.layout.ly_reciters, container, false);
_scope = this;
lv_reciters = (ListView) view.findViewById(R.id.lv_reciters);
reciters_Search = (EditText) view.findViewById(R.id.reciters_Search);
reciters_Search.setText("");
reciters_Search.setBackgroundColor(getResources(). getColor(
android.R.color.transparent));
reciters_Search.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2,
int arg3) {
if (recitersItemAdapter != null)
recitersItemAdapter.getFilter().filter(cs);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
if (arg0.length() == 0)
reciters_Search.setBackgroundColor(getResources(). getColor(
android.R.color.transparent));
else
reciters_Search.setBackgroundColor(Color.WHITE);
}
});
reciters_Search.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (v == reciters_Search) {
if (hasFocus) {
reciters_Search.setBackgroundColor(Color.WHITE);
}
}
}
});
setupUI();
return view;
}
@Override
public void onResume() {
super.onResume();
}
ArrayList<Reciters> recitersList;
private void setupUI() {
reciters_Search.setText("");
recitersList = GlobalConfig.GetmyDbHelper().get_reciters(
GlobalConfig.lang_id);
recitersItemAdapter = new RecitersItemAdapter(_scope, recitersList);
lv_reciters.setAdapter(recitersItemAdapter);
lv_reciters.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View aView,
int position, long arg3) {
Reciters reciter = recitersItemAdapter
.getSelectedReciter(position);
if (reciter != null) {
AudioListManager audioListManager = AudioListManager
.getInstance();
audioListManager.setSelectedReciter(reciter);
if (_FragmentActivity != null)
_FragmentActivity.displayView(3);
else {
Intent in = new Intent(_scope.getActivity()
.getApplicationContext(), MainActivity.class);
_scope.getActivity().setResult(Activity.RESULT_OK, in);
_scope.getActivity().finish();
}
}
}
});
int top = lv_reciters.getTop();
// lv_reciters.setSelectionFromTop(
// chapterslistManager.getCurrentSelectedChapterPosit ion(), top);
// recitersItemAdapter.setSelectedItem(chapterslistMa nager
// .getCurrentSelectedChapterPosition());
}
}
اینم کد های مربوط به لیست ویو دوم هست :
import java.io.File;import java.sql.Date;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
public class ListFolder extends Fragment {
private File currentDir;
private FileArrayAdapter adapter;
private View view;
MainActivity _FragmentActivity = null;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
_FragmentActivity = (MainActivity) activity;
} catch (Exception e) {
_FragmentActivity = null;
}
}
private ListView lv_reciters;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
view = inflater.inflate(R.layout.ly_audios_list, container, false);
lv_reciters = (ListView) view.findViewById(R.id.lv_reciters);
lv_reciters.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View aView,
int position, long arg3) {
Albumb o = adapter.getItem(position);
if (o.getImage().equalsIgnoreCase("play_list_fill")
|| o.getImage().equalsIgnoreCase("ic_action_back")) {
currentDir = new File(o.getPath());
level = 2;
if (o.getImage().equalsIgnoreCase("ic_action_back"))
level = 1;
fill(currentDir);
}
}
});
currentDir = new File("/sdcard/123");
fill(currentDir);
return view;
}
int level = 1;
private void fill(File f) {
File[] dirs = f.listFiles();
// this.setTitle("Current Dir: " + f.getName());
List<Albumb> dir = new ArrayList<Albumb>();
List<Albumb> fls = new ArrayList<Albumb>();
try {
for (File ff : dirs) {
String name = ff.getName();
Date lastModDate = new Date(ff.lastModified());
DateFormat formater = DateFormat.getDateTimeInstance();
String date_modify = formater.format(lastModDate);
/*
* Note: Remove this name.equalsIgnoreCase("Personal" if u want
* to list all ur sd card file and folder &&
* name.equalsIgnoreCase("Personal")
*/
if (ff.isDirectory()) {
File[] fbuf = ff.listFiles();
int buf = 0;
if (fbuf != null) {
buf = fbuf.length;
} else
buf = 0;
String num_item = String.valueOf(buf);
if (buf == 0)
num_item = num_item + " item";
else
num_item = num_item + " items";
// String formated = lastModDate.toString();
if (level == 1)
dir.add(new Albumb(ff.getName(), num_item, date_modify,
ff.getAbsolutePath(), "play_list_fill"));
} else {
/*
* Note: Remove this f.getName().equalsIgnoreCase("Personal"
* if u want to list all ur sd card file and folder if
* (f.getName().equalsIgnoreCase( "Personal")) {}
*/
if (level != 1)
fls.add(new Albumb(ff.getName(), ff.length() + " Byte",
date_modify, ff.getAbsolutePath(), "mp3_icon"));
}
}
} catch (Exception e) {
}
Collections.sort(dir);
Collections.sort(fls);
dir.addAll(fls);
if (!f.getName().equalsIgnoreCase("MP3Quran")) {
dir.add(0, new Albumb("..", "Parent Directory", "", f.getParent(),
"ic_action_back"));
level = 1;
}
adapter = new FileArrayAdapter(_FragmentActivity, R.layout.file_view,
dir);
lv_reciters.setAdapter(adapter);
// this.setListAdapter(adapter);
}
}
یه مشکل در لیست ویو دارم که کلا شرح میدم دوستان اگه نظری دارند خوشحال میشم بشنوم و عمل کنم !
برنامه متشکل از دو لیست ویو هست که لیست ویو دوم زیرمجموعه ی آیتم های لیست ویو اول هست.
مشکل از اونجا شروع میشه که هر ایتمی از لیست ویو شماره یک انتخاب بشه، زیرمجموعه های اون ها هم شبیه هم در میاد به تصویر زیر توجه کنید :
من وقتی کتاب اول رو انتخاب می کنم :
http://up.vbiran.ir/uploads/1967314447575797778_1111111.png
لیست داستان ها نشون داده میشه :
http://up.vbiran.ir/uploads/15609144475758029957_222222.png
در ادامه اگه کتاب دوم رو انتخاب کنم باز لیست تمام داستان ها نشون داده میشه در حالی که من در نظر دارم :
وقتی کتاب اول انتخاب میشه در لیست داستان ها، داستان های شماره 1و 2 و3 نشون داده بشه و وقتی کتاب دوم رو انتخاب می کنم داستان های 4 و 5 و 6 نشون داده بشه و الی آخر ....
اطلاعات همگی در دیتابیس sqlite ذخیره شده و از اونجا فراخونی میشه
اگه بتونید کمک کنید حلش کنم ممنون میشم
این کد های مربوط به لیست ویو اوله:
import java.util.ArrayList;
import android.app.ActionBar;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.EditText;
import android.widget.ListView;
import com.quranmp3.controllers.AudioListManager;
import com.quranmp3.model.Reciters;
import com.quranmp3.utils.GlobalConfig;
public class RecitersFragment extends Fragment {
private View view;
private ListView lv_reciters;
private RecitersItemAdapter recitersItemAdapter;
private RecitersFragment _scope;
private EditText reciters_Search;
MainActivity _FragmentActivity = null;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
_FragmentActivity = (MainActivity) activity;
} catch (Exception e) {
_FragmentActivity = null;
}
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Fragment _fragment = null;
_fragment = new AdmobFragment();
FragmentManager _fragmentManager = getFragmentManager();
_fragmentManager.beginTransaction()
.add(R.id.admob_container, _fragment).commit();
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar actionbar;
actionbar = this.getActivity().getActionBar();
// actionbar.setTitle(getResources().getString(R.stri ng.chapters));
setHasOptionsMenu(true);
view = inflater.inflate(R.layout.ly_reciters, container, false);
_scope = this;
lv_reciters = (ListView) view.findViewById(R.id.lv_reciters);
reciters_Search = (EditText) view.findViewById(R.id.reciters_Search);
reciters_Search.setText("");
reciters_Search.setBackgroundColor(getResources(). getColor(
android.R.color.transparent));
reciters_Search.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2,
int arg3) {
if (recitersItemAdapter != null)
recitersItemAdapter.getFilter().filter(cs);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
if (arg0.length() == 0)
reciters_Search.setBackgroundColor(getResources(). getColor(
android.R.color.transparent));
else
reciters_Search.setBackgroundColor(Color.WHITE);
}
});
reciters_Search.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (v == reciters_Search) {
if (hasFocus) {
reciters_Search.setBackgroundColor(Color.WHITE);
}
}
}
});
setupUI();
return view;
}
@Override
public void onResume() {
super.onResume();
}
ArrayList<Reciters> recitersList;
private void setupUI() {
reciters_Search.setText("");
recitersList = GlobalConfig.GetmyDbHelper().get_reciters(
GlobalConfig.lang_id);
recitersItemAdapter = new RecitersItemAdapter(_scope, recitersList);
lv_reciters.setAdapter(recitersItemAdapter);
lv_reciters.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View aView,
int position, long arg3) {
Reciters reciter = recitersItemAdapter
.getSelectedReciter(position);
if (reciter != null) {
AudioListManager audioListManager = AudioListManager
.getInstance();
audioListManager.setSelectedReciter(reciter);
if (_FragmentActivity != null)
_FragmentActivity.displayView(3);
else {
Intent in = new Intent(_scope.getActivity()
.getApplicationContext(), MainActivity.class);
_scope.getActivity().setResult(Activity.RESULT_OK, in);
_scope.getActivity().finish();
}
}
}
});
int top = lv_reciters.getTop();
// lv_reciters.setSelectionFromTop(
// chapterslistManager.getCurrentSelectedChapterPosit ion(), top);
// recitersItemAdapter.setSelectedItem(chapterslistMa nager
// .getCurrentSelectedChapterPosition());
}
}
اینم کد های مربوط به لیست ویو دوم هست :
import java.io.File;import java.sql.Date;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
public class ListFolder extends Fragment {
private File currentDir;
private FileArrayAdapter adapter;
private View view;
MainActivity _FragmentActivity = null;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
_FragmentActivity = (MainActivity) activity;
} catch (Exception e) {
_FragmentActivity = null;
}
}
private ListView lv_reciters;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
view = inflater.inflate(R.layout.ly_audios_list, container, false);
lv_reciters = (ListView) view.findViewById(R.id.lv_reciters);
lv_reciters.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View aView,
int position, long arg3) {
Albumb o = adapter.getItem(position);
if (o.getImage().equalsIgnoreCase("play_list_fill")
|| o.getImage().equalsIgnoreCase("ic_action_back")) {
currentDir = new File(o.getPath());
level = 2;
if (o.getImage().equalsIgnoreCase("ic_action_back"))
level = 1;
fill(currentDir);
}
}
});
currentDir = new File("/sdcard/123");
fill(currentDir);
return view;
}
int level = 1;
private void fill(File f) {
File[] dirs = f.listFiles();
// this.setTitle("Current Dir: " + f.getName());
List<Albumb> dir = new ArrayList<Albumb>();
List<Albumb> fls = new ArrayList<Albumb>();
try {
for (File ff : dirs) {
String name = ff.getName();
Date lastModDate = new Date(ff.lastModified());
DateFormat formater = DateFormat.getDateTimeInstance();
String date_modify = formater.format(lastModDate);
/*
* Note: Remove this name.equalsIgnoreCase("Personal" if u want
* to list all ur sd card file and folder &&
* name.equalsIgnoreCase("Personal")
*/
if (ff.isDirectory()) {
File[] fbuf = ff.listFiles();
int buf = 0;
if (fbuf != null) {
buf = fbuf.length;
} else
buf = 0;
String num_item = String.valueOf(buf);
if (buf == 0)
num_item = num_item + " item";
else
num_item = num_item + " items";
// String formated = lastModDate.toString();
if (level == 1)
dir.add(new Albumb(ff.getName(), num_item, date_modify,
ff.getAbsolutePath(), "play_list_fill"));
} else {
/*
* Note: Remove this f.getName().equalsIgnoreCase("Personal"
* if u want to list all ur sd card file and folder if
* (f.getName().equalsIgnoreCase( "Personal")) {}
*/
if (level != 1)
fls.add(new Albumb(ff.getName(), ff.length() + " Byte",
date_modify, ff.getAbsolutePath(), "mp3_icon"));
}
}
} catch (Exception e) {
}
Collections.sort(dir);
Collections.sort(fls);
dir.addAll(fls);
if (!f.getName().equalsIgnoreCase("MP3Quran")) {
dir.add(0, new Albumb("..", "Parent Directory", "", f.getParent(),
"ic_action_back"));
level = 1;
}
adapter = new FileArrayAdapter(_FragmentActivity, R.layout.file_view,
dir);
lv_reciters.setAdapter(adapter);
// this.setListAdapter(adapter);
}
}