Это обсуждалось во многих сообщениях, но все же я не мог найти решение с помощью:
android:focusable="false"
android:focusableInTouchMode="false"
android:focusableInTouchMode="false"
Ниже решение будет работать с любой из компонентов ui: Button, ImageButtons, ImageView, Textview. LinearLayout, RelativeLayout кликает внутри ячейки списка и отвечает на onItemClick:
Класс адаптера - getview ():
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
view = lInflater.inflate(R.layout.my_ref_row, parent, false);
}
final Organization currentOrg = organizationlist.get(position).getOrganization();
TextView name = (TextView) view.findViewById(R.id.name);
Button btn = (Button) view.findViewById(R.id.btn_check);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
context.doSelection(currentOrg);
}
});
if(currentOrg.isSelected()){
btn.setBackgroundResource(R.drawable.sub_search_tick);
}else{
btn.setBackgroundResource(R.drawable.sub_search_tick_box);
}
}
В этом вы можете получить объект с нажатой кнопкой активность. (Специально, если вы хотите, чтобы кнопка выступала в качестве флажка с выбранными и не выбранными состояниями):
public void doSelection(Organization currentOrg) {
Log.e("Btn clicked ", currentOrg.getOrgName());
if (currentOrg.isSelected() == false) {
currentOrg.setSelected(true);
} else {
currentOrg.setSelected(false);
}
adapter.notifyDataSetChanged();
}
Сортировка файлов естественно с помощью Sort::Key::Natural natsort
.
Ниже будут автоматически сортироваться файлы, отделяя альфа-и числовые части имени для соответствующей логики сортировки.
use strict;
use warnings;
use Sort::Key::Natural qw(natsort);
for my $file ( natsort <Temp*.csv> ) {
# this part appends the required data to a seperate file and works fine
}
Следующие поддельные данные должны продемонстрировать этот модуль в действии:
use strict;
use warnings;
use Sort::Key::Natural qw(natsort);
print natsort <DATA>;
__DATA__
Temp100.csv
Temp8.csv
Temp20.csv
Temp1.csv
Temp7.csv
Выходы:
Temp1.csv
Temp7.csv
Temp8.csv
Temp20.csv
Temp100.csv
Если числа действительно важны, вы можете прочитать их специально после имени файла, при этом сообщается об ошибках об отсутствующих файлах:
my @nums = 1 .. 1500; # or whatever the highest is
for my $num (@nums) {
my $file = "Temp$num.csv";
unless (-e $file) {
warn "Missing file: $file";
next;
}
...
# proceed as normal
}
Если вам нужно количество файлов, вы можете просто использовать свои old glob:
my @files = <Temp*.csv>;
my $count = @files; # get the size of the array
my @nums = 1 .. $count;
С другой стороны, если вы управляете процессом, который печатает файлы, вы можете выбрать формат, который будет автоматически сортироваться, например:
temp00001.csv
temp00002.csv
temp00003.csv
temp00004.csv
...
temp00101.csv
Вы можете использовать преобразование Schwartzian для чтения и сортировки файлов за один шаг,
my @files =
map { $_->[0] }
sort { $a->[1] <=> $b->[1] }
map { [ $_, /(\d+)/ ] } <Temp*.csv>;
или используя менее эффективный и более простой вид,
my @files = sort { ($a =~ /(\d+)/)[0] <=> ($b =~ /(\d+)/)[0] } <Temp*.csv>;